【问题标题】:Test Observable.FlatMap Mockito测试 Observable.FlatMap Mockito
【发布时间】:2018-01-22 22:05:32
【问题描述】:

我一直在网上寻找解决方案,如果有的话(UnitTest 和 Mockito 上的新功能)

是否可以测试一个返回服务调用的方法并在返回它之前操纵它的结果?示例;

public Observable<Reports> getUserReports(Integer userId) {
    return serviceClient
        .getReports(userId)
        .flatMap(serviceReports -> {
            System.out.println("Testing inside flatMap"); <- never reach this line therefore duno if methods down here are invoked and work perfectly
            final Observable<List<Report>> reports = getPendingReports(userId, serviceReports);

            //More methods that modify/update information

            return zip(observable1, observable2, observable3
                (report1, report2, report3) -> {
                    updateReports(otherArguments, report1, report2, report3);
                    return serviceReports;
                });

        });
}

到目前为止我已经尝试过;

@Test
public void myTest(){
        when(serviceClient
            .getReports(anyInt()))
            .thenReturn(Observable.just(reports));

        Observable<Reports> result = mocketClass.getUserReports(userId)
}

尝试使用 Spy 和 Mock,但到目前为止没有运气。任何提示或帮助都会很棒。

【问题讨论】:

    标签: java-8 mockito rx-java


    【解决方案1】:

    要模拟 getReports() 行为,您需要先模拟 serviceClient 并将其传递给您的服务类。

    举例:

    @Test
    public void myTest(){
        // Given
        final ServiceClient mockedServiceClient = Mockito.mock(ServiceClient.class);
        when(mockedServiceClient
            .getReports(anyInt()))
            .thenReturn(Observable.just(reports));
    
        // and create an instance of your class under testing with injected mocked service client.
        final MyUserService userService = new MyUserService();
        userService.setServiceClient(mockedServiceClient);
    
        // When run a method under test
        Observable<Reports> actualResult = userService.getUserReports(userId)
    
        // Then
        // actualResult to be verified.
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2020-05-03
      • 2017-07-22
      • 1970-01-01
      相关资源
      最近更新 更多