gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:12:34 25 4
gpt4 key购买 nike

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

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

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

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();
}
}

不幸的是,when(T methodCall) 无法处理对象比较。 sut.something() 之后的assertEquals 在这里对我没有帮助,因为状态可能在doSomething 中发生了多次变化。

我确信一定有办法解决这个问题。如果旧的 JMock 有 Mockito 没有的功能,那会很奇怪:-) ...我就是找不到它。

最佳答案

您需要的是一个称为Answer的东西 - 这是一个对象,它包装了一小块代码,这些代码将在调用您的方法时运行。使用 Answer 的语法在 http://docs.mockito.googlecode.com/hg/latest/org/mockito/Mockito.html#11 中描述。

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

关于java - Mockito - 根据另一个对象状态验证方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22741941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com