gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:17:51 25 4
gpt4 key购买 nike

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

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。可以说由于各种原因我无法更改正在测试的代码。

最佳答案

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

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

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

关于java - Mockito 在调用方法之前验证模拟中设置的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33310201/

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