ruby-on-rails-3 – 未能用Capybara测试Devise

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – 未能用Capybara测试Devise前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Devise构建一个Rails 3应用程序,用Capybara进行UI测试.以下测试失败: @H_502_2@class AuthenticationTest < ActionController::IntegrationTest def setup @user = User.create!(:email => 'test@example.com',:password => 'testtest',:password_confirmation => 'testtest') @user.save! Capybara.reset_sessions! end test "sign_in" do # this proves the user exists in the database ... assert_equal 1,User.count assert_equal 'test@example.com',User.first.email # ... but we still can't log in ... visit '/users/sign_in' assert page.has_content?('Sign in') fill_in :user_email,:with => 'test@example.com' fill_in :user_password,:with => 'testtest' click_button('user_submit') # ... because this test fails assert page.has_content?('Signed in successfully.') end end

…但我不知道为什么.从代码中可以看出,用户正在数据库中创建;我使用相同的方法来创建用户,就像我在seeds.rb中一样.

如果我通过调试器运行测试,我可以看到数据库中的用户,并验证该页面是否正在加载.但仍然认证失败;我可以验证这一点,因为如果我更改断言来测试故障情况,测试通过:

@H_502_2@# verify that the authentication actually Failed assert page.has_content?('Invalid email or password.')

我习惯了Rails 2,&使用Selenium进行这种测试,所以我怀疑我在做某事.有人可以在这里指向正确的方向吗?

解决方法

我有同样的问题,发现 a thread with a solution: @H_502_2@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.如果以前没有使用过,您可能需要在重新运行测试之前耙db:test:prepare.我希望这也适合你!

原文链接:https://www.f2er.com/ruby/272051.html

猜你在找的Ruby相关文章