1
我有給定的測試代碼:如何運行命令水豚一次,然後運行一些測試
describe 'A new user', js: true do
before do
@new_user = Fabricate.build(:user)
end
it 'should sign up' do
#login code
visit '/'
click_link 'Login'
fill_in 'user[email]', :with => @new_user.email
fill_in 'user[password]', :with => @new_user.password
click_button 'Login now'
#login code end
page.should have_content("Hello #{@new_user.first_name}!")
current_path.should == dashboard_path
end
it 'should receive a confirmation mail' do
#same login code again
visit '/'
click_link 'Login'
fill_in 'user[email]', :with => @new_user.email
fill_in 'user[password]', :with => @new_user.password
click_button 'Login now'
mail = ActionMailer::Base.deliveries.last
assert_equal @new_user.email, mail['to'].to_s
end
end
現在我想添加更多的測試。 爲了避免代碼翻倍,我怎麼才能在所有測試之前運行一次水豚登錄代碼? 一種解決方案是將登錄代碼放入before方法。另一個辦法是創建一個方法do_login,把代碼中並運行每一個測試是這樣的:
it 'should do something after login' do
do_login
#test code here
end
但對於這兩種解決方案,代碼運行的每個測試並且那不是我想要的。將登錄代碼放入before(:all)
也不起作用。
我該如何運行一些水豚代碼,然後在此之後進行所有測試?
謝謝您的回答。你知道它爲什麼不起作用嗎?這是水豚還是別的什麼問題? – ben
瀏覽器重置了每個規格。這不是功能錯誤。 –