【问题标题】:Mocking When a service method is called调用服务方法时的模拟
【发布时间】:2019-07-11 11:24:49
【问题描述】:

我有一个 SpringBoot 应用程序,我在其中进行了一些测试。我有这个 Junit 测试:

和测试:

        public class FindHotelDataRequestTransformerTest {


            @Autowired
            private BackendHotelService backendHotelService;

            private FindHotelDataRequestTransformer transformer;

            @Before
            public void setUp() {
                transformer = new FindHotelDataRequestTransformer( backendHotelService);
            }

        @Test
        public void theTest() {
            mock(BackendHotelService.class);
when(transformer.getHotelApplicationName()).thenReturn("NameMocked");
...

        }
    }

基于这些类:

public abstract class HotelDataRequestTransformer {



    private final BackendCredentialsService backendCredentialsService;

    public HotelDataRequestTransformer(BackendCredentialsService backendCredentialsService) {
        this.backendCredentialsService = backendCredentialsService;
    }

    public String getHotelApplicationName() {
        return backendCredentialsService.getHotelApplicationName();
    }


}




    @Component
    public class FindHotelDataRequestTransformer extends HotelDataRequestTransformer {


        public FindHotelDataRequestTransformer(BackendHotelService backendHotelService) {
            super (backendHotelService);
        }
    ..
    }

但是当我运行测试时,我在行中得到了一个 Nullpointer

return backendCredentialsService.getHotelApplicationName();

所以 Mocking.when 似乎不起作用

【问题讨论】:

  • 你需要模拟调用该对象的任何方法的结果,否则模拟将不知道返回什么。所以你需要一个when(mockedObject.getterMethod()).thenReturn() 声明来继续超过那个点。

标签: java testing junit mocking mockito


【解决方案1】:

从模拟本身而不是被测类返回

backendHotelService = mock(BackendHotelService.class); // also use the mock created :)
when(backendHotelService.getHotelApplicationName()).thenReturn("NameMocked");

【讨论】:

    【解决方案2】:

    transformer 不是一个模拟对象,您正在创建一个新的转换器。

    backendHotelService 是模拟对象。

    尝试: when(backendHotelService.getHotelApplicationName()).thenReturn("NameMocked");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多