你好,我在设置方法中有一个全局Mock,但想在同一类的一项测试中将其禁用。有可能吗?
class Test extends Specification {
void setup() {
GroovyMock(Utils, global: true)
Utils.getRemoteBranches(*_) >> new ArrayList<String>()
}
void "test1"() {
given:
Object context = getContext()
when:
...
答案 0 :(得分:0)
您可以重命名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:
// ...
}
某种程度上,我同意有关测试可读性的意见,如果没有Mock的测试相对重要,则应考虑创建单独的Specification
。