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

Sut*_*000 1 java testing unit-testing mockito powermock

我正在尝试围绕一些遗留代码编写一些单元测试,我正在努力研究如何测试一段代码.模式基本上是:

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();
Run Code Online (Sandbox Code Playgroud)

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

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

Flo*_*etz 6

如果要验证模拟foo中的某些方法是否被正确调用,您可以简单地写...

Mockito.verify( foo, Mockito.times(1)).setVariableX("x");
Run Code Online (Sandbox Code Playgroud)

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