我今天才开始了解Mockito.我写了一些简单的测试(使用JUnit,见下文),但我无法弄清楚如何在Spring的托管bean中使用模拟对象.使用Spring的最佳实践是什么?我应该如何向我的bean注入模拟依赖?
你可以跳过这个直到回到我的问题.
首先,我学到了什么.这是非常好的文章Mocks Are Not Stubs解释了基础知识(Mock的检查行为验证不是状态验证).然后有一个很好的例子Mockito 和这里更容易嘲笑mockito.我们有解释说Mockito的模拟对象都是模拟和存根.
这个测试
@Test
public void testReal(){
List<String> mockedList = mock(List.class);
//stubbing
//when(mockedList.get(0)).thenReturn("first");
mockedList.get(anyInt());
OngoingStubbing<String> stub= when(null);
stub.thenReturn("first");
//String res = mockedList.get(0);
//System.out.println(res);
//you can also verify using argument matcher
//verify(mockedList).get(anyInt());
verify(mockedList);
mockedList.get(anyInt());
}
Run Code Online (Sandbox Code Playgroud)
工作得很好.
回到我的问题.在这里注入Mockito模拟到Spring bean有人试图使用Springs ReflectionTestUtils.setField(),但是在这里Spring Integration Tests,创建模拟对象我们建议改变 Spring的上下文.
我真的不明白最后两个链接......有人可以向我解释一下Spring与Mockito有什么问题吗?这个解决方案有什么问题?
@InjectMocks
private MyTestObject testObject …Run Code Online (Sandbox Code Playgroud)