Spock无法检测到doTip方法调用
(我需要共享一些“ where”块。)
使用最新的groovy和spock。
为什么此代码是错误的?
如何解决?
import spock.lang.Shared
import spock.lang.Specification
class Test extends Specification {
def controller
@Shared
String g = ""
@Shared
def tip = Mock(Tip)
def "test"() {
controller = new TController(tip: tip)
when:
controller.transform(g)
then:
1 * tip.doTip(_)
}
}
class Tip {
def doTip(String f) {}
}
class TController {
Tip tip
def transform(String g) {
tip.doTip(g)
}
}
最佳答案
使用setup()
创建模拟,如下所示:
@Grab(group='org.spockframework', module='spock-core', version='1.0-groovy-2.4')
import spock.lang.*
class Test extends Specification {
def controller
@Shared String g = ""
@Shared tip
def setup() {
tip = Mock(Tip)
}
def "test"() {
given:
controller = new TController(tip: tip)
when:
controller.transform(g)
then:
1 * tip.doTip(_)
}
}
class Tip {
def doTip(String f) {}
}
class TController {
Tip tip
def transform(String g) {
tip.doTip(g)
}
}
结果
JUnit 4 Runner, Tests: 1, Failures: 0, Time: 78
关于unit-testing - Spock无法检测方法调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37361157/