你好,我在设置方法中有一个全局模拟,但希望将其禁用在同一类中的一个测试中。有可能吗?
class Test extends Specification {
void setup() {
GroovyMock(Utils, global: true)
Utils.getRemoteBranches(*_) >> new ArrayList<String>()
}
void "test1"() {
given:
Object context = getContext()
when:
...
您可以将setup
方法重命名,然后在given
步骤中调用。Spock中还有一个setup
关键字。它的含义与given
。
例如,这样:
class Test extends Specification {
void setupMock() {
GroovyMock(Utils, global: true)
Utils.getRemoteBranches(*_) >> new ArrayList<String>()
}
void "testWithMock"() {
given:
setupMock()
Object context = getContext()
when:
// ...
void "testWithoutMock"() {
given:
Object context = getContext()
when:
// ...
}
在某种程度上,我同意有关测试读数的评论,如果没有模拟的测试相对重要,则应考虑创建单独的Specification
。