我正在测试使用use @ Autowired注入(inject)服务的类:
public class RuleIdValidator implements ConstraintValidator<ValidRuleId, String> {
@Autowired
private RuleStore ruleStore;
// Some other methods
}
但是如何在测试过程中模拟ruleStore?我不知道如何将我的模拟RuleStore注入(inject)Spring和 Autowiring 系统。
谢谢
最佳答案
Mockito非常容易:
@RunWith(MockitoJUnitRunner.class)
public class RuleIdValidatorTest {
@Mock
private RuleStore ruleStoreMock;
@InjectMocks
private RuleIdValidator ruleIdValidator;
@Test
public void someTest() {
when(ruleStoreMock.doSomething("arg")).thenReturn("result");
String actual = ruleIdValidator.doSomeThatDelegatesToRuleStore();
assertEquals("result", actual);
}
}
在Mockito Javadoc或前一段时间写的有关该主题的@InjectMocks中阅读有关blog post的更多信息。
从Mockito 1.8.3开始可用,在1.9.0中进行了增强。