java - 替换非静态方法java模拟

标签 java methods mocking replace spy

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

问题是我无法创建模拟对象,因为该对象是直接在代码中创建的。

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

例如,假设我需要测试一下:

... myClass anObject = new myClass(); anObject.aMethod();
...

我如何模拟调用 anObject.aMethod() ?

我想我需要监视 myClass,但它不起作用..

最佳答案

使用依赖注入(inject)。

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

执行此操作的其他方法是将工厂传递给对象的构造函数。

关于java - 替换非静态方法java模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4874464/

相关文章:

python - 在单元测试中测试一个函数是否在另一个函数内部被调用

java - QuickBooks Online Java SDK DataServiceexecuteBatch() 导致 NullPointerException

java - 从 .bat 文件运行 jar 文件时调整控制台大小

Java – 使用二维数组和构造函数(初学者)

java - 有没有办法在 Java 中声明方法 "friendly"?

java - Java 中是否可以将方法体作为参数传递?

java - 尝试使用它们时,同一调用中的两个泛型方法是否会导致编译错误?

python - 在 Python Flask 蓝图中模拟函数

java - 用于查找规范覆盖或最小数量的函数依赖项的程序

python-3.x - 如何模拟elasticsearch.helpers.bulk