Mockito 在调用方法之前验证模拟中设置的变量

Mockito Verify variables set in a mock before calling a method

我正在尝试围绕一些遗留代码编写一些单元测试,但我正在努力弄清楚如何测试一段代码。模式基本上是:

Foo foo = ObjectGetter.getObject(Foo.class);
foo.setVariableX("X");
foo.setVariableY("Y");
foo.performExecute();
//The Foo object has now run some business logic
String bar = foo.getVariableZ();

我已经通过 PowerMock 模拟了静态 ObjectGetter class 并设法传入模拟的 Foo 对象。我现在想做的是当 performExecute 是 运行 检查变量 X 和 Y 是否设置为 Foo 中的预定值但实际上 运行 Foo 中的任何代码。然后在调用 getVariableZ 时传回某个值。

我可以让 VariableZ 传回任何我想要的东西,但我无法弄清楚如何使变量 X 和 Y 设置为特定值的条件!我正在使用 Mockito 和 PowerMock。可以说由于各种原因我无法更改正在测试的代码。

如果你想验证 mock foo 中的一些方法是否被正确调用,你可以简单地写...

Mockito.verify( foo, Mockito.times(1)).setVariableX("x");

如果对象 foo 的方法 setVariableX 没有恰好被调用一次,这将导致测试失败。您无法真正测试变量 "x",因为它实际上并不存在于您的模拟中,但您可以验证 setter 是否被正确调用。