我正在测试一个使用 @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);
}
}
阅读更多关于 @InjectMocks 的信息在 Mockito javadoc 或 blog post 中我前段时间写的关于这个主题的文章。
从 Mockito 1.8.3 开始可用,在 1.9.0 中增强。
关于java - 为 Spring 单元测试注入(inject)模拟 @Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4624080/