启用js时验收测试失败

时间:2011-07-13 11:05:42

标签: ruby-on-rails testing rspec

我的登录页面验收测试遇到了一个奇怪的问题。

当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时,测试服务器没有启动,因此登录失败。有什么想法吗?

2 个答案:

答案 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才能重新运行测试。我希望这也适合你!