禁用一个测试的全局Spock模拟类



你好,我在设置方法中有一个全局模拟,但希望将其禁用在同一类中的一个测试中。有可能吗?

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

最新更新