[英]No calls to mocked object in scala using powermock
我正在尝试在 scala 中使用 power mock。
我想测试的课程
class Operations {
def write(s: String): Unit = {
val customWriter = new CustomWriter()
customWriter.write(s)
}
}
我想模拟的班级
class CustomWriter {
def write(s: String): Unit = {
//do something
}
}
我的规格文件
import org.junit.runner.RunWith
import org.mockito.Mockito
import org.scalatest.mockito.MockitoSugar.mock
import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
import org.scalatest.Matchers._
import org.scalatest.{BeforeAndAfterAll, FunSpec, PrivateMethodTester}
@RunWith(classOf[PowerMockRunner])
@PrepareForTest(Array(classOf[Operations]))
class PowerMockTest extends FunSpec {
describe("Using power mock") {
it("check constructor call") {
val ops = new Operations()
val mocked = mock[CustomWriter]
PowerMockito.whenNew(classOf[CustomWriter]).withNoArguments().thenReturn(mocked)
ops.write("Write Me")
PowerMockito.verifyNew(classOf[CustomWriter]).withNoArguments()
}
}
}
堆栈跟踪如何测试失败
java.lang.AssertionError: Wanted but not invoked customWriter();
Actually, there were zero interactions with this mock.
我什至尝试验证模拟对象上的方法调用,仍然没有运气
Mockito.verify(mocked).write("Write me")
请帮助我了解我在这里缺少什么
看起来您缺少CustomWriter
注释中的@PrepareForTest
。
使用 Powermock 的需要可能表明您做错了什么。 也许您可以改变您的方法,以便您可以使用 Mockito 对其进行测试。
如果您可以控制Operations
类,则可以传递CustomWriter
实例,而不是在方法内实例化它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.