Написание шагов в rspec-рельсах? - PullRequest
0 голосов
/ 09 июля 2011

Я только начинаю тестирование, и мне интересно, как написать шаги для спецификаций RSpec, чтобы я мог повторно использовать множество функций, таких как вход в систему и т. Д.

1 Ответ

3 голосов
/ 09 июля 2011

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

Особенно в случае тестирования на Ruby очень высоки шансы, что кто-то уже написалбиблиотека для решения конкретной проблемы, которую вы хотите.Например, очень часто требуется, чтобы некоторые данные существовали до того, как операция может быть должным образом протестирована, и именно поэтому factory_girl существует.

Если вы хотите сделатьповеденческое интеграционное тестирование, которое проходит через все шаги, которые на самом деле делает пользователь, вместо этого вы должны использовать огурец .

Если вы хотите повторно использовать методы в разных местахВы можете поместить общий код в spec/support:

# spec/support/consumable_helper.rb
module ConsumableHelper
  def consume(consumable)
    calories = consumable.om_nom_nom
  end
end

RSpec.configure do |config|
  config.include ConsumableHelper
end

Если вы хотите протестировать одинаковое поведение в нескольких областях, используйте shared_examples_for и it_behaves_like:

shared_examples_for "a Consumable" do
  it "should be delicious" do
    subject.should be_delicious
  end

  it "should provide nutrition" do
    subject.calories.should > 0
  end
end

describe Fruit do
  it_behaves_like "a Consumable"
end

describe Meat do
  it_behaves_like "a Consumable"
end
...