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



我正试图围绕一些遗留代码编写一些单元测试,我正在努力找出如何测试一段代码。模式基本上是:

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类,并设法通过模拟Foo对象。我现在要做的是当performExecute运行时检查变量X &Y在Foo中设置为预定值,但实际上不运行Foo中的任何代码。然后,当getVariableZ被调用时,返回一个特定的值。

我可以让变量z传递回我想要的任何东西,但我不知道如何使变量X和Y被设置为特定值的条件!我用的是Mockito和PowerMock。由于各种原因,我不能更改我正在测试的代码。

如果您想验证模拟foo中的一些方法是否被正确调用,您可以简单地编写…

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

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

相关内容

  • 没有找到相关文章

最新更新