前提:之前给自己的代码写单元测试习惯使用Mokito、MockMvc,这次是需要对自己写的grpc接口进行一个集成测试,由于刚接触grpc,所以我需要通过集成测试保证grpc的调用是顺利的。由于集成测试mock的资料还是比较少,这次卡了两天,所以把自己这个过程中遇到的问题和解决方法记录下来供大家参考,也欢迎交流和指教~
在真实方法中,我需要使用RestTemplete 和 MongoTemplete等第三方依赖,对于MongoDB的存取需要进行mock,否则每一次测试都会操作Mongo,这是我不愿意看到的。
测试的调用关系大致是这样的:
grpcClient - blockingStub - xxxGrpc - xxxGrpcImp - service - serviceImp中的真实方法 - 调用mongoTemplete的方法。
1、首先我尝试了@Mock注解,但测试时并没有进入到mock的方法中,依然向mongo中存入了数据。伪代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest
public class Test {
@Mock
MongoTemplate mongoTemplate
@Test
private void test1(){
Mockito.when(mongoTeplate.save()).thenReturn("mocksave");
grpcClient.blockingStub.saveFile();
}
}