@@ -17,27 +17,30 @@ class GreeterServiceTest : public ugrpc::tests::ServiceFixtureBase {
1717 GreeterServiceTest () : service_(prefix_) {
1818 RegisterService (service_);
1919 StartServer ();
20+ generated_client_ = MakeClient<samples::api::GreeterServiceClient>();
2021 }
2122
2223 ~GreeterServiceTest () override { StopServer (); }
2324
25+ samples::api::GreeterServiceClient& GetGeneratedClient () { return generated_client_.value (); }
26+
2427private:
2528 const std::string prefix_{" Hello" };
2629 // We've made sure to separate the logic into samples::GreeterService that is
2730 // detached from the component system and only depends on things obtainable
2831 // in gtest tests.
2932 samples::GreeterService service_;
33+
34+ std::optional<samples::api::GreeterServiceClient> generated_client_;
3035};
3136// / [service fixture]
3237} // namespace
3338
3439// / [service tests]
3540UTEST_F (GreeterServiceTest, SayHelloDirectCall) {
36- const auto client = MakeClient<samples::api::GreeterServiceClient>();
37-
3841 samples::api::GreetingRequest request;
3942 request.set_name (" gtest" );
40- const auto response = client .SayHello (request);
43+ const auto response = GetGeneratedClient () .SayHello (request);
4144
4245 EXPECT_EQ (response.greeting (), " Hello, gtest!" );
4346}
@@ -46,15 +49,15 @@ UTEST_F(GreeterServiceTest, SayHelloCustomClient) {
4649 // We've made sure to separate some logic into samples::GreeterClient that is
4750 // detached from the component system, it only needs the gRPC client, which we
4851 // can create in gtest tests.
49- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
52+ const samples::GreeterClient client{GetGeneratedClient ()};
5053 const auto response = client.SayHello (" gtest" );
5154 EXPECT_EQ (response, " Hello, gtest!" );
5255}
5356// / [service tests]
5457
5558// / [service tests response stream]
5659UTEST_F (GreeterServiceTest, SayHelloResponseStreamCustomClient) {
57- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
60+ const samples::GreeterClient client{GetGeneratedClient ()};
5861 const auto responses = client.SayHelloResponseStream (" gtest" );
5962 EXPECT_THAT (
6063 responses,
@@ -67,7 +70,7 @@ UTEST_F(GreeterServiceTest, SayHelloResponseStreamCustomClient) {
6770
6871// / [service tests request stream]
6972UTEST_F (GreeterServiceTest, SayHelloRequestStreamCustomClient) {
70- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
73+ const samples::GreeterClient client{GetGeneratedClient ()};
7174
7275 const std::vector<std::string_view> names = {" gtest" , " !" , " !" , " !" };
7376 const auto response = client.SayHelloRequestStream (names);
@@ -78,7 +81,7 @@ UTEST_F(GreeterServiceTest, SayHelloRequestStreamCustomClient) {
7881
7982// / [service tests streams]
8083UTEST_F (GreeterServiceTest, SayHelloStreamsCustomClient) {
81- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
84+ const samples::GreeterClient client{GetGeneratedClient ()};
8285
8386 const std::vector<std::string_view> names = {" gtest" , " !" , " !" , " !" };
8487 const auto responses = client.SayHelloStreams (names);
@@ -102,18 +105,26 @@ class GreeterMock final : public samples::api::GreeterServiceBase {
102105 ::samples::api::GreetingRequest&& request,
103106 SayHelloResponseStreamWriter& writer
104107 ) override ;
108+
105109 SayHelloRequestStreamResult SayHelloRequestStream (CallContext& context, SayHelloRequestStreamReader& reader)
106110 override ;
111+
107112 SayHelloStreamsResult SayHelloStreams (CallContext& context, SayHelloStreamsReaderWriter& stream) override ;
108113};
109114
110115// Default-constructs GreeterMock.
111- using GreeterClientTest = ugrpc::tests::ServiceFixture<GreeterMock>;
116+ class GreeterClientTest : public ugrpc ::tests::ServiceFixture<GreeterMock> {
117+ protected:
118+ samples::api::GreeterServiceClient& GetGeneratedClient () { return generated_client_; }
119+
120+ private:
121+ samples::api::GreeterServiceClient generated_client_{MakeClient<samples::api::GreeterServiceClient>()};
122+ };
112123
113124} // namespace
114125
115126UTEST_F (GreeterClientTest, SayHelloMockedServiceCustomClient) {
116- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
127+ const samples::GreeterClient client{GetGeneratedClient ()};
117128 const auto response = client.SayHello (" gtest" );
118129 EXPECT_EQ (response, " Mocked response" );
119130}
@@ -138,7 +149,7 @@ GreeterMock::SayHelloResponseStreamResult GreeterMock::SayHelloResponseStream(
138149}
139150
140151UTEST_F (GreeterClientTest, SayHelloResponseStreamMockedServiceCustomClient) {
141- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
152+ const samples::GreeterClient client{GetGeneratedClient ()};
142153 const auto responses = client.SayHelloResponseStream (" gtest" );
143154 EXPECT_THAT (
144155 responses,
@@ -161,7 +172,7 @@ GreeterMock::SayHelloRequestStream(CallContext& /*context*/, SayHelloRequestStre
161172}
162173
163174UTEST_F (GreeterClientTest, SayHelloRequestStreamMockedServiceCustomClient) {
164- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
175+ const samples::GreeterClient client{GetGeneratedClient ()};
165176 const std::vector<std::string_view> names = {" gtest" , " !" , " !" , " !" };
166177 auto response = client.SayHelloRequestStream (names);
167178 EXPECT_EQ (response, " Mocked response!!!" );
@@ -183,7 +194,7 @@ GreeterMock::SayHelloStreams(CallContext& /*context*/, SayHelloStreamsReaderWrit
183194}
184195
185196UTEST_F (GreeterClientTest, SayHelloStreamsMockedServiceCustomClient) {
186- const samples::GreeterClient client{MakeClient<samples::api::GreeterServiceClient> ()};
197+ const samples::GreeterClient client{GetGeneratedClient ()};
187198
188199 const std::vector<std::string_view> names = {" gtest" , " !" , " !" , " !" };
189200 const auto responses = client.SayHelloStreams (names);
0 commit comments