Скажите, пожалуйста, почему это происходит?Почему я получаю ошибку в своем приемочном тесте?
Я не могу понять, если я пишу:
feature "Article Creation" do
#here i write (:all)
before(:all) do
sign_up_helper
end
Я получаю ошибку:
Article Creation allows user to visit to creating article page
Failure/Error: fill_in :article_title, :with => 'test_title'
Capybara::ElementNotFound:
Unable to find field :article_title
или
1) Article Creation allows user to visit to article page
Failure/Error: expect(page).to have_content I18n.t('articles.articles_new')
expected to find text "New Article:" in "Toggle navigation Blog Rails New Contacts Sign in --- !ruby/hash:ActionController::Parameters controller: devise/sessions action: new {\"controller\"=>\"devise/sessions\", \"action\"=>\"new\"} nil You need to sign in or sign up before continuing. Sign in: Email Password Remember me Sign up Forgot your password?"
, но, если я пишу:
feature "Article Creation" do
#here i write(:each)
before(:each) do
sign_up_helper
end
Это нормально. Все тесты работают. Мой вопрос - ПОЧЕМУ?
Это мой тест:
*#before all test visitor signs up
#here I've changed :all and :each*
feature "Article Creation" do
before(:all) do
sign_up_helper
end
scenario "allows user to visit to article page" do
visit new_article_path
expect(page).to have_content I18n.t('articles.articles_new')
end
scenario "allows user to visit to created article page" do
visit new_article_path
fill_in :article_title, :with => 'test_title'
fill_in :article_text, :with => 'example_text'
click_button 'Save Article'
expect(page).to have_content 'example_text'
end
Это метод sign_up_helper:
#spec/support/session_helper.rb
def sign_up_helper
visit new_user_registration_path
fill_in :user_email, :with => '[email protected]'
fill_in :user_username, :with => 'mike'
fill_in :user_password, :with => '[email protected]#'
fill_in :user_password_confirmation, :with => '[email protected]#'
click_button 'Sign up'
end
Это HTML форма:
<p>
<label for="article_title">Title</label><br/>
<input type="text" name="article[title]" id="article_title" />
</p>
<p>
<label for="article_text">Text</label><br/>
<textarea name="article[text]" id="article_text">
</textarea>
</p>
Что делать, чтобы оно было правильно? – Vladimir
Do 'before: each'. –