Как разделить настройку между несколькими тестами с использованием фреймворка spock с groovy - PullRequest
5 голосов
/ 10 августа 2011

Я новичок в споке и заметил установку: шаг в спецификации ограничен локально для этого конкретного теста. Как я могу поделиться настройкой через эти приборы подобно традиционному подходу junit?

спасибо!

def "setup with spock"() {
    setup:
    def message = new FooMessage()
    def sut = new FooProcessor()
    def builder = Mock(FooBuilder)
    sut.setBuilder(builder)

    when:
    builder.buildFooUsing(_) >> {"bar"}
    def result = sut.process(message)

    then:
    assert result == "bar"
  }

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

Вам следует использовать setupSpec () или посмотреть аннотацию @Shared, если вы хотите совместно использовать один объект в тестах

1 голос
/ 10 марта 2015

Из документации Спока

1.3.4 Совместное использование объектов между итерациями

Чтобы разделить объект между итерациями, он должен храниться в @Sharedили статическое поле.

Примечание. Внутри блока where: доступны только @Shared и статические переменные.

Обратите внимание, что такие объекты также будут доступны другимметоды.В настоящее время нет хорошего способа поделиться объектом только между итерациями одного и того же метода.Если вы считаете это проблемой, подумайте о том, чтобы поместить каждый метод в отдельную спецификацию, и все они могут храниться в одном файле.Это обеспечивает лучшую изоляцию за счет некоторого стандартного кода.

...