我的登录页面验收测试遇到了一个奇怪的问题。
当js未启用时,登录正常工作即。以下案例:
scenario "login with valid authentication" do
visit login_path
page.should have_content("Sprout Login")
fill_in("user_login", :with => "mark")
fill_in("user_password", :with => "secured")
click_button "Sign in"
page.should have_content("mark")
end
但是当我启用javascript时,登录失败并提供无效的登录消息。
scenario "login with valid authentication", :js => true do
visit login_path
page.should have_content("Sprout Login")
fill_in("user_login", :with => "mark")
fill_in("user_password", :with => "secured")
click_button "Sign in"
page.should have_content("mark")
end
BTW我正在使用Devise进行身份验证。 在此先感谢。
更新:最近注意到当启用js时,测试服务器没有启动,因此登录失败。有什么想法吗?
答案 0 :(得分:0)
除非创建默认用户并在每次测试运行之前登录,否则您的测试将失败。 Devise提供测试助手,使创建和登录默认用户变得简单。创建文件spec / support / devise.rb:
RSpec.configure do |config|
config.include Devise::TestHelpers, :type => :controller
end
答案 1 :(得分:0)
我遇到了同样的问题,发现a thread with a solution:
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
要使DatabaseCleaner工作,您需要包含database_cleaner
gem。如果您之前没有使用它,则可能需要rake db:test:prepare
才能重新运行测试。我希望这也适合你!