0

我需要模拟对象的公共非静态方法。

问题是我不能创建一个模拟对象,因为这个对象是直接在代码中创建的。

我曾尝试使用 PowerMockito.spy() 和 PowerMockito.when(...) 来监视该类,但它不起作用(可能是因为 PowerMockito.when 仅适用于静态和私有方法)

例如,假设我需要对此进行测试:

... myClass anObject = new myClass(); 一个对象.aMethod();
...

我怎么能模拟调用 anObject.aMethod() ?

我想我需要监视 myClass,但它没有用..

4

2 回答 2

1

最好重构代码以使用依赖注入。

但是一个快速的谷歌建议你实际上可以在 PowerMockito 中存根构造函数。有关whenNew 的信息,请参见javadoc 。

我不能保证它,因为我没有使用过 PowerMockito,但这看起来应该允许你让你的构造函数调用返回一个模拟对象。

于 2011-02-02T13:08:08.760 回答
1

使用依赖注入。

在最简单的情况下,只需将工厂对象传递给创建对象的方法,然后监视该工厂。

这样做的其他方法是将工厂传递给对象的构造函数。

于 2011-02-02T12:41:07.397 回答