Pla*_*Ton 5 javascript ruby-on-rails capybara sorcery
我已经使用了水豚一段时间,但我是巫术的新手.我有一个非常奇怪的问题,如果我在没有Capybara的情况下运行规范:js => true功能我可以正常登录,但是如果我尝试在规范中指定:js => true,则无法找到用户名/密码.
这是身份验证宏:
module AuthenticationMacros
def sign_in
user = FactoryGirl.create(:user)
user.activate!
visit new_sessions_path
fill_in 'Email Address', :with => user.email
fill_in 'Password', :with => 'foobar'
click_button 'Sign In'
user
end
end
Run Code Online (Sandbox Code Playgroud)
在这样的规格中称为:
feature "project setup" do
include AuthenticationMacros
background do
sign_in
end
scenario "creating a project" do
"my spec here"
end
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常.但是,如果我改变了场景规范(在这种情况下)
scenario "adding questions to a project" do
Run Code Online (Sandbox Code Playgroud)
至
scenario "adding questions to a project", :js => true do
Run Code Online (Sandbox Code Playgroud)
登录失败,并出现"用户名/密码错误"组合.字面上唯一的变化是:js => true.我正在使用默认的capybara javascript驱动程序.(加载Firefox)
有什么想法可以在这里发生什么?我完全难过了.我正在使用Capybara 2.0.1,Sorcery 0.7.13.登录页面上没有javascript,在点击"登录"之前save_and_open_page确认在用户名/密码字段中输入了正确的详细信息.任何建议真的很感激 - 我很茫然.
根据capybara doc,默认的capybara javascript驱动程序是Selenium.由于Selenium在单独的线程中执行,因此您必须禁用事务夹具,否则Selenium线程将无法访问您在数据库中创建的数据.请参阅https://github.com/jnicklas/capybara#using-capybara-with-testunit.该部分有关于禁用事务性装置的这些注释.