Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Omniauth测试模拟不';使用Capybara webkit驱动程序时无法工作_Javascript_Ruby On Rails 4_Omniauth_Capybara Webkit - Fatal编程技术网

Javascript Omniauth测试模拟不';使用Capybara webkit驱动程序时无法工作

Javascript Omniauth测试模拟不';使用Capybara webkit驱动程序时无法工作,javascript,ruby-on-rails-4,omniauth,capybara-webkit,Javascript,Ruby On Rails 4,Omniauth,Capybara Webkit,我正在尝试使用带MiniTest的Capybara和Capybara webkit驱动程序来测试Rails 4应用程序中的页面,其中包含Omniauth登录和简单的Javascript。我已经设置了Omniauth模拟,如下所述:,它可以很好地用于带有默认机架驱动程序的Capybara测试 我在测试用例开始时启用了capybara webkit驱动程序: Capybara.current_driver = :webkit 然后,我单击我模拟的提供者的链接,并检查我是否通过了用户主页的身份验证:

我正在尝试使用带MiniTest的Capybara和Capybara webkit驱动程序来测试Rails 4应用程序中的页面,其中包含Omniauth登录和简单的Javascript。我已经设置了Omniauth模拟,如下所述:,它可以很好地用于带有默认机架驱动程序的Capybara测试

我在测试用例开始时启用了capybara webkit驱动程序:

Capybara.current_driver = :webkit
然后,我单击我模拟的提供者的链接,并检查我是否通过了用户主页的身份验证:

click_on('Google')
assert_equal home_user_path(@user), current_path
断言失败,原因是:

Expected: "/users/407557848/home"
  Actual: "/auth/google_oauth2/callback"
实际字符串是(模拟)Google通过身份验证回调的URL。它应该被路由到我的会话控制器来设置会话,并使用机架驱动程序处理其他测试用例


知道我做错了什么吗?

原来这是因为webkit驱动程序在不同的线程中运行服务器。一个线程锁定了数据库,因此另一个线程无法执行登录我所需的操作。为了修复它,我停止使用事务性装置:

class TeamBuildingTest < ActionDispatch::IntegrationTest
  self.use_transactional_fixtures = false
...
class TeamBuildingTest
然后我用gem清理了我的数据库。在这种情况下,尝试迈出一小步给我带来的痛苦更多,而不是更少(我在尝试学习水豚和Javascript时,试图避免学习另一种宝石)

我发现在
数据库_cleaner
文档旁边有帮助