Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mockito-根据另一个对象状态验证方法调用_Java_Tdd_Mockito - Fatal编程技术网

Java Mockito-根据另一个对象状态验证方法调用

Java Mockito-根据另一个对象状态验证方法调用,java,tdd,mockito,Java,Tdd,Mockito,我目前正在阅读《成长的面向对象设计——测试引导》一书。作者是书中使用的JMock的创建者。因为Mockito目前拥有最具表现力(可读性)的API,所以我使用Mockito而不是JMock 对于大多数示例,到目前为止,这种方法非常有效,代码少得多。不过,看看API是如何随着时间和框架(JMock->EasyMock->Mockito)的发展而演变并仍然基于相同的概念是很有趣的 无论如何:我需要验证在另一个对象状态具有特定值时是否调用了mock方法。 public class TestSomethi

我目前正在阅读《成长的面向对象设计——测试引导》一书。作者是书中使用的JMock的创建者。因为Mockito目前拥有最具表现力(可读性)的API,所以我使用Mockito而不是JMock

对于大多数示例,到目前为止,这种方法非常有效,代码少得多。不过,看看API是如何随着时间和框架(JMock->EasyMock->Mockito)的发展而演变并仍然基于相同的概念是很有趣的

无论如何:我需要验证在另一个对象状态具有特定值时是否调用了mock方法。

public class TestSomething{

    private MyMockedInterface mock;
    private States state;

    @Test
    public void testMethod()
    {
        // I need something like
        when(state.equals(value)).verify(mock).method()

        sut.doSomething();
    }
}
不幸的是,(T methodCall)无法处理对象比较。在sut.something()之后的assertEquals在这里对我没有帮助,因为状态可能已经在doSomething内改变了好几次


我确信一定有办法解决这个问题。如果老JMock有一个特性Mockito doesnt:-)。。。我就是找不到它。

你需要的是一个叫做
答案的东西
-这是一个对象,它封装了一小段代码,当你的方法被调用时会运行。有关使用
答案的语法,请参见

在您的
答案中
,您可以使用断言检查其他对象的状态是否符合您的需要。最后,您可以执行
验证
,以确保调用了该方法