2016-02-22 36 views
0

这是第一次测试即时写作需要:js => true,所以我安装了硒。硒测试无法登录

我总是能够使用我之前创建的某些凭据进行登录,但在我通过硒运行它们时无法登录。

进行仔细检查,看是否我还在创建我的用户(招聘)

puts "RECRUITER NAME => #{Recruiter.first.email}" 

回报

RECRUITER NAME => [email protected] 

我总是把我的密码 “testtesttest”

但总是无法登录。 它使用不同的(空的?)数据库吗?我是否缺少一些必需的设置?

注意 =>如果删除:js => true,那么使用完全相同的文件登录将会完美无缺。但不知怎的,它突破了这一步。

+0

您是否在transactional包装中使用transactional_fixtures或DatabaseCleaner?默认情况下,集成规范是使用2个线程运行不同的连接,有一个monkeypatch可以修复它。要检查您可以比较'Recruiter.first.email'的rspec和控制器代码的输出 – faron

回答

1

执行js测试时,被测试的应用程序在与测试不同的线程中运行,这意味着它们不再共享相同的数据库连接 - 请参阅https://github.com/jnicklas/capybara#transactions-and-database-setup。有两种方法可以强制这两个线程共享连接,但它最终会在某些边缘情况下变得不稳定,并限制在测试中特定时间您可以执行的数据库访问,而且实际上并非初学者想要处理的问题。更好/最简单的解决方案是禁用事务性测试并使用截断或删除来管理数据库状态。最简单的方法是使用database_cleaner并设置一个配置,将交换到每个测试所需的策略 - https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-example