Я пытаюсь собрать тест одного запуска в RSpec:Rspec предотвратить переключение контекста между ним блоками
feature "Happy Path", js:true do
before(:all) do
@user = create(:user)
@object = create(:object, account: @object.account)
sign_in @user
end
describe "test" do
context "test" do
include_examples "it_will_expand_the_menu"
include_examples "it_will_navigate_to_the_object" do
let(:object) {@object.name}
end
end
end
и общие примеры определены:
shared_examples "it_will_expand_the_menu" do
it "expands menu" do
...
...
end
end
shared_examples "it_will_navigate_to_the_object" do
it "fills in the country" do
click_on object
end
end
Первый тест проходит с меню однако, между двумя тестами браузер обновляется и переходит к пустой HTML-странице до того, как ошибки RSpec устраняются с
Failure/Error: click_on object
Capybara::ElementNotFound:
Unable to find link or button "Bicycle"
Что происходит? Почему RSpec восстанавливает контекст, даже если у меня сложилось впечатление, что include_examples поддерживает текущий контекст? Как я могу обойти это?
Каждый тест работает изолированно; вы делаете что-то во втором тесте, которое должно быть непрерывным с последнего шага? – kiddorails
да второй тест имеет смысл только из состояния в конце первого шага. Есть ли способ сделать тесты непрерывными? –
В идеале ваши тесты должны быть в состоянии работать в любом порядке. Если вас беспокоит избыточность, вы можете сушить код, который вы повторяете, в вспомогательную функцию. –