Как установить некоторую зависимость между примерами rspec? - PullRequest
1 голос
/ 01 марта 2012

Нам нужно запустить один пример, если все его зависимости не были успешно выполнены.

т.е:

describe group_example do
    it example_1 do
       ####
    end
    it example_2 do
       ####
    end
    it example_3 do
       ####
    end

    example_4 should not run unless example_1, example_2 & example_3
    Returns Sucess else return NOT RUN
end

Не могли бы вы посоветовать, как это сделать?

спасибо.

С уважением, Nouha

Ответы [ 2 ]

4 голосов
/ 01 марта 2012

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

В этом конкретном случае для шага 4 настройте приложение так, как если бы тесты 1, 2 и 3 прошли успешно, а затем запустите тест, относящийся к шагу 4. Лучше изолировать тестируемый код в максимально возможной степени, и не вводите зависимости между тестами, если это возможно.

1 голос
/ 09 апреля 2013

Как отметил @D_Bye, вы можете использовать команду before для настройки и проверки предварительных условий для группы примеров, а также вкладывать примеры.

describe "group example" do
  it "example 1" do
    ####
  end

  it "example 2" do
    ####
  end

  it "example 3" do
    ####
  end

  context "with preconditions" do
    before(:each) do
      # Establish the same preconditions as tested by examples
      # 1, 2, 3, or mark examples in this context as pending.
      begin
        ####
        raise "foo"
      rescue RuntimeError => e
        pending "preconditions not met: #{e.message}"
      end
    end

    it "example 4" do
      ####
    end
  end
end

Также можно filtering запускать только те примеры, которые могут быть запущены (например, в зависимости от установленного программного обеспечения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...