Отключить глобальный класс Spock Mock для одного теста - PullRequest
0 голосов
/ 12 марта 2019

Здравствуйте, у меня есть глобальный 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 голосов
/ 13 марта 2019

Вы можете просто переименовать ваш setup метод и вызвать его на вашем given шаге. В Споке также есть ключевое слово 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.

...