Junit Mockito-每次调用方法时返回mocked对象
我正在尝试为我正在使用Mockito编写的一段代码编写一个单元测试 每当给定类型的任何类调用某个方法时,我都需要返回一个模拟对象 我在想下面的事情,但我似乎无法让它工作Junit Mockito-每次调用方法时返回mocked对象,junit,mockito,Junit,Mockito,我正在尝试为我正在使用Mockito编写的一段代码编写一个单元测试 每当给定类型的任何类调用某个方法时,我都需要返回一个模拟对象 我在想下面的事情,但我似乎无法让它工作 Mockito.when(Mockito.any((MyObject.class).myMethod(Mockito.anyString()))).thenReturn(mockedObject); 基本上,每当MyObject的任何实例调用myMethod()方法时,我都希望返回一个mockedObject 有人知
Mockito.when(Mockito.any((MyObject.class).myMethod(Mockito.anyString()))).thenReturn(mockedObject);
基本上,每当MyObject的任何实例调用myMethod()方法时,我都希望返回一个mockedObject
有人知道这是可能的吗?莫基托不是这样工作的。使用Mockito,您将创建一个mock实例,并将其传递给mock的测试客户端代码
MyObject mo = mock(MyObject.class);
@Before public void init() {
// inject mo to the tested code
}
@Test public void ensure_client_code_notify_my_object() {
// given
when(mo.myMethod(anyString()))).thenReturn(anotherMock);
// when
client.theTestedAPI();
// then
// verify(...)....
// assertThat(...)....
请注意,对于生产代码的设计而言,返回mock的mock通常不是一个好迹象。它显示了耦合的迹象,特别是它意味着该代码违反了德米特定律
为了改善关注点的分离,避免违反德米特定律,你绝对应该遵循“告诉,不要问”的原则
这本书很值得一读
HTH谢谢你这么说。是的,我必须编写的代码与遗留代码库相关联。“紧密耦合”不是这个词的意思。