我将使用
spock
的规范测试来测试一些类测试。
有些方法使用Domain.list()
,但无法通过光规格测试获得。
当然,我可以用模拟全局替换替换Domain.list()
。
但它会禁用其他域静态方法。如何只更改一种静态域方法并保留其他方法?
我用这种方式嘲笑:
GroovyMock(Domain,global: true)
Domain.list() >> [ domain1, domain2 ]
你尝试过
GroovySpy
吗?
package de.scrum_master.stackoverflow.q78963473
import spock.lang.Specification
class MockSingleStaticMethodTest extends Specification {
def test() {
given:
GroovySpy(Domain, global: true)
Domain.list() >> ['domain1', 'domain2']
expect:
Domain.list() == ['domain1', 'domain2']
Domain.doSomething() == 'result'
}
}
class Domain {
static List list() {
println 'listing'
['one', 'two', 'three']
}
static String doSomething() {
println 'doing something'
'result'
}
}
在 Groovy Web Console 中尝试一下。