我正在测试使用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中进行了增强。

10-06 10:58