mock -每次调用方法时返回模拟对象



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

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

我在想下面的事情,但我似乎不能让它工作。

    Mockito.when(Mockito.any((MyObject.class).myMethod(Mockito.anyString()))).thenReturn(mockedObject); 

基本上任何时候MyObject的任何实例调用它的myMethod()方法,我想返回一个mockedObject。

有人知道这是可能的吗?

Mockito不是这样工作的。使用Mockito,您将创建一个模拟实例,并将其传递给模拟的测试客户端代码。

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通常不是一个好兆头。它显示了耦合的迹象,特别是它意味着这段代码违反了得墨忒耳定律。

要改善关注点分离,避免违反Demeter的定律,您绝对应该遵循告诉,不要问原则。

这本书是一本很好的读物。

HTH

相关内容

  • 没有找到相关文章

最新更新