带参数的Groovy模拟方法

Mar*_*eln 4 testing groovy mocking

我试着模拟一些maven课程.

我知道我可以用地图模拟一个接口或一个类

def projectMock = [ getBasedir: { new File("") } ] as MavenProject
Run Code Online (Sandbox Code Playgroud)

但是如何模拟接收参数的方法?

我曾试图使用"MockFor":

def artifactFactoryMockContext = new MockFor(ArtifactFactory)
artifactFactoryMockContext.demand.createArtifact(1) {groupId, artifactId, version, classifier, type -> artifact }
def artifactFactory = artifactFactoryMockContext.proxyInstance()
Run Code Online (Sandbox Code Playgroud)

但是我得到了UnsupportedOperationException.我在这做错了什么?

Eri*_*lin 8

只要你可以使用Groovy Map强制进行模拟而不是框架,这种事情对你有用:

def fooMock = [ bar: { baz, thing -> 42 } ] as Foo
Run Code Online (Sandbox Code Playgroud)

现在fooMock.bar("arg1", "arg2")将返回42.