有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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时,返回一个特定的值

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


共 (1) 个答案

  1. # 1 楼答案

    如果想验证mock foo中的某些方法是否被正确调用,只需编写

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

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