我使用 capybara 已经有一段时间了,但我对巫术还是个新手。我有一个非常奇怪的问题,如果我在没有 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
在规范中这样调用:
feature "project setup" do
include AuthenticationMacros
background do
sign_in
end
scenario "creating a project" do
"my spec here"
end
上面的代码工作正常。但是,如果我更改场景规范(在本例中)
scenario "adding questions to a project" do
到
scenario "adding questions to a project", :js => true do
登录失败,“用户名/密码不正确”组合。从字面上看,唯一的变化是 :js => true。我正在使用默认的 capybara javascript 驱动程序。 (加载 Firefox)
知道这里会发生什么吗?我完全被难住了。我使用的是 Capybara 2.0.1,Sorcery 0.7.13。登录页面上没有 javascript,在单击“登录”之前保存并打开页面确认在用户名/密码字段中输入了正确的详细信息。非常感谢任何建议 - 我不知所措。
最佳答案
根据 capybara 文档,默认的 capybara javascript 驱动程序是 Selenium。因为 Selenium 在单独的线程中执行,所以您必须禁用事务固定装置,否则 Selenium 线程将无法访问您在数据库中创建的数据。参见 https://github.com/jnicklas/capybara#using-capybara-with-testunit .该部分包含有关禁用事务固定装置的注释。
关于javascript - 巫术/ capybara : Cannot log in with :js => true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13872947/