【发布时间】: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