Junit Mockito-每次调用方法时返回mocked对象

Junit Mockito-每次调用方法时返回mocked对象,junit,mockito,Junit,Mockito,我正在尝试为我正在使用Mockito编写的一段代码编写一个单元测试 每当给定类型的任何类调用某个方法时,我都需要返回一个模拟对象 我在想下面的事情,但我似乎无法让它工作 Mockito.when(Mockito.any((MyObject.class).myMethod(Mockito.anyString()))).thenReturn(mockedObject); 基本上,每当MyObject的任何实例调用myMethod()方法时,我都希望返回一个mockedObject 有人知

我正在尝试为我正在使用Mockito编写的一段代码编写一个单元测试

每当给定类型的任何类调用某个方法时,我都需要返回一个模拟对象

我在想下面的事情,但我似乎无法让它工作

    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

谢谢你这么说。是的,我必须编写的代码与遗留代码库相关联。“紧密耦合”不是这个词的意思。