gpt4 book ai didi

unit-testing - 在Spock中验证方法调用

转载 作者:行者123 更新时间:2023-12-02 14:52:05 24 4
gpt4 key购买 nike

我正在尝试测试应该在域类上调用方法的Grails Controller 。以下是有关我的设置的示例:

域类:

class Vampire {

def turnIntoBat() { ... }

}

Controller :
class VampireController {

def transform(Vampire vampire) {
...
vampire.turnIntoBat()
...
}

}

测试:
void "Bat transformation"() {
when:
controller.request.json = new Vampire(...)
controller.transform()

then:
//verify that turnIntoBat is invoked
...
}

在此测试中可以看到,我使用JSON发送数据,因此模拟域类不会有任何区别(在我要尝试做的事情中)。另外,我可以只调用 controller.transform(mockVampire),但由于我还要尝试测试 Controller 的JSON / REST方面,我想尽可能地坚持上面的那个。

最佳答案

在这里,您可以进行整个测试(带有模拟的grails类):

@Grab('org.spockframework:spock-core:0.7-groovy-2.0')
@Grab('cglib:cglib-nodep:3.1')

import spock.lang.*

class Test extends Specification {

void "test bat transformation"() {
given:
def controller = new VampireController()
def vampire = GroovyMock(Vampire)

when:
controller.transform(vampire)

then:
1 * vampire.turnIntoBat()
}
}

class Vampire {
def turnIntoBat() { }
}

class VampireController {
def transform(Vampire vampire) {
vampire.turnIntoBat()
}
}

关于unit-testing - 在Spock中验证方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24876918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com