Ruby on rails Can';t登录FactoryGirl';s用户/数据

Ruby on rails Can';t登录FactoryGirl';s用户/数据,ruby-on-rails,capybara,factory-bot,poltergeist,Ruby On Rails,Capybara,Factory Bot,Poltergeist,在使用JS进行测试之前,我必须先登录用户。登录页面不起作用(此测试除外) 问题是,单击“登录”按钮会返回带有“无效用户/密码”组合的页面(就好像用户不在数据库中一样)。问题是,显然,真正的用途是在数据库中,密码是正确的(测试“CanAuthenticateUser”通过) 在点击“登录”按钮之前,我做了一个屏幕截图,字段填充正确。我试图在before块中创建用户,但也没有成功 登录页面没有任何特殊内容,没有javascript或其他内容。只需向服务器发送一个普通表单 有什么想法吗?这是我不久前在

在使用JS进行测试之前,我必须先登录用户。登录页面不起作用(此测试除外)

问题是,单击“登录”按钮会返回带有“无效用户/密码”组合的页面(就好像用户不在数据库中一样)。问题是,显然,真正的用途是在数据库中,密码是正确的(测试“CanAuthenticateUser”通过)

在点击“登录”按钮之前,我做了一个屏幕截图,字段填充正确。我试图在before块中创建用户,但也没有成功

登录页面没有任何特殊内容,没有javascript或其他内容。只需向服务器发送一个普通表单


有什么想法吗?

这是我不久前在使用
rspec
poltergeist
时遇到的。问题是
phantomjs
线程无法在数据库中看到由
FactoryGirl
创建的记录。要解决此问题,您必须将db连接配置为在
spec\u helper.rb
中共享,并添加以下代码

class ActiveRecord::Base
  mattr_accessor :shared_connection
  @@shared_connection = nil

  def self.connection
    @@shared_connection || retrieve_connection
  end
end

# Forces all threads to share the same connection. This works on
# Capybara because it starts the web server in a thread.
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection

您可以在第3点中找到更多解释。

我在使用DesiveInvitable时遇到了这个问题-如果设置了邀请令牌,则不会让该用户登录。难道这不适用于你吗?我没有使用Desive,但你能告诉我更多关于你的问题以及你是如何解决的吗?它可能会给我一个线索…DesiveInvitable会给用户提供邀请令牌,如果设置了一个,那么您就不能以该用户的身份登录。我的工厂正在使用令牌创建用户,因此无法以令牌身份登录。错误消息没有帮助!如果您正在运行spork,那么必须将其放入spec\u helper的spork.each\u run块中。
class ActiveRecord::Base
  mattr_accessor :shared_connection
  @@shared_connection = nil

  def self.connection
    @@shared_connection || retrieve_connection
  end
end

# Forces all threads to share the same connection. This works on
# Capybara because it starts the web server in a thread.
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection