代码之家  ›  专栏  ›  技术社区  ›  Jens Schauder

莫基托抱怨错误的论点

  •  7
  • Jens Schauder  · 技术社区  · 15 年前

    我们试图用Mockito验证一个动作的行为。测试代码如下所示

    final Type1 mock = mock(Type1.class);
    new SomeAction<Type1>(mock).actionPerformed(null);
    
    verify(mock).someMethod();
    

    actionPerformed方法只包含对Type1构造函数中提供的对象的someMethod调用。然而Mockito抱怨说,预期的方法调用没有发生,而是发生了一个不同的方法调用。但是Mockito打印的两个调用的字符串表示完全相同!

    有什么解释吗?

    更新:来自Mockito的错误消息

    Argument(s) are different! Wanted:
    type1.someMethod();
    -> at xxx
    Actual invocation has different arguments:
    type1.someMethod();
    -> at xxx
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   javamonkey79    15 年前

    这有点困难,但请检查toString实现。我遇到过一些令人恼火的单元测试场景,从单元测试的角度来看,它们的预期和观察似乎是相同的,而实际上它们是不同的。最后,是toString的变化使我相信在现实中没有相似之处。