使用Mockito 注释 (MockitoJUnitRunner.class、@InjectMocks和@Mock):
@RunWith(MockitoJUnitRunner.class)
public class TagRepositoryTest {
@InjectMocks
private TagRepository repository;
@Mock
private SetupDetails setupDetails;
....
}我在构造函数中使用注入的依赖项让测试目标类:
public class TagRepository {
private final Collection<Tag> tags;
@Autowired
public TagRepository(SetupDetails setupDetails) {
this.tags = Arrays.asList(
new Tag("name", setupDetails.getSourceId()),
...
);
...
}目前,我正在中-- @Setup中的方法调用或when()在@Test中的方法调用
when(setupDetails.getSourceId()).thenReturn("1");这是不像预期的那样工作。Mockito似乎只在调用@InjectMocks TagRepository构造函数之后对方法调用进行存根,从而返回null而不是"1"。
是否有办法在调用构造函数之前(使用Mockito注释)使存根就绪?
发布于 2017-08-16 15:47:03
我能够解决这个问题的唯一方法是试图控制Mockito设置这个场景的顺序,放弃Mockito注释:
public void setUp() {
setupDetails = mock(SetupDetails.class);
when(setupDetails.getDbId()).thenReturn("1");
repository = new TagRepository(setupDetails);
}发布于 2017-08-16 16:23:06
事实上,情况就是这样,你的“周密工作”就是要走的路。有些人会认为这是一个很好的实践,因为当您向被测试的类引入更多成员时,您的测试将不会编译,因为您还会将它们添加到构造函数中。
https://stackoverflow.com/questions/45717978
复制相似问题