使用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
或@Test
内部使用when()
存根方法调用:when(setupDetails.getSourceId()).thenReturn("1");
这无法正常工作。 Mockito似乎仅在调用
@InjectMocks TagRepository
构造函数后才对方法调用进行存根,从而导致返回null
蜂鸣声而不是"1"
。有没有一种方法可以在调用构造函数之前准备好存根(使用Mockito注释)?
最佳答案
我能够解决此问题的唯一方法是尝试控制在这种情况下放弃Mockito批注的Mockito设置顺序:
public void setUp() {
setupDetails = mock(SetupDetails.class);
when(setupDetails.getDbId()).thenReturn("1");
repository = new TagRepository(setupDetails);
}