如何使用Groovy';s mock.interceptor包来模拟对象构造函数?

如何使用Groovy';s mock.interceptor包来模拟对象构造函数?,groovy,mocking,Groovy,Mocking,在我尝试使用mock.interceptor包模拟Groovy中的对象时: def mock = new MockFor(TheClass); mock.demand.theMethod{ "return" } mock.use { def underTest = new TheClass() println underTest.theMethod() } 我遇到的问题是,在use{块中创建类()时,它使用实际的构造函数,在这种情况下,我宁愿它不使用。如何创建此类的实例,以便在

在我尝试使用
mock.interceptor
包模拟Groovy中的对象时:

def mock = new MockFor(TheClass);
mock.demand.theMethod{ "return" }
mock.use {
    def underTest = new TheClass()
    println underTest.theMethod()
}
我遇到的问题是,在
use{
块中创建
类()
时,它使用实际的构造函数,在这种情况下,我宁愿它不使用。如何创建此类的实例,以便在不需要使用构造函数的情况下测试我所关心的方法
方法


使用EasyMock/CE,可以不使用构造函数进行模拟,但我很好奇如何在Groovy中实现这一点。

我最近看到了的作者的演示,它有一些允许“构造函数”模拟的钩子,我想这正是您想要的

e、 g

这个库不同于groovy的“内置”库,但是它看起来写得非常好,考虑了一些您想要模拟的内容,更重要的是,考虑了测试失败时会收到的错误消息


我想这正是您所追求的。我要说的是小心使用构造函数mocking-这可能是一种应该注入工厂对象的气味,但对于某些事情来说,它看起来工作得很好。

调用MockFor时可以使用interceptConstruction标志,请参阅

 def mockFile = mock(File, constructor('/a/path/file.txt'))