禁用全局Spock Mock类进行一项测试

时间:2019-03-12 09:56:49

标签: java testing spock

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

class Test extends Specification {

  void setup() {
    GroovyMock(Utils, global: true)
    Utils.getRemoteBranches(*_) >> new ArrayList<String>()
  }

  void "test1"() {
    given:
    Object context = getContext()

    when:
    ...

1 个答案:

答案 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