Devise 测试设备时密码无效

Devise 测试设备时密码无效,devise,capybara,factory-bot,Devise,Capybara,Factory Bot,我试着运行测试 describe "CreateFolders" do describe "GET /projects" do it "new folder", :js => true do @user = FactoryGirl.create(:user) visit projects_path fill_in('user_Login', :with => @user.email) fill_in('user_passwo

我试着运行测试

describe "CreateFolders" do
  describe "GET /projects" do
    it "new folder", :js => true do
      @user = FactoryGirl.create(:user)
      visit projects_path
      fill_in('user_Login', :with => @user.email)
      fill_in('user_password', :with => @user.password)
      click_button('Sign in')
      page.should have_content('Logged in')
    end
  end
我明白了


在rails中,有三个数据库集:开发数据库、测试数据库和生产数据库, 您可能正在开发数据库中创建新用户,该用户应该在测试数据库中创建,因为在您进行测试时,将使用测试数据库

确保在测试数据库中创建了新用户

如果您只需要访问需要身份验证的页面,而不需要测试登录表单,那么在Capybara中有一种简单的方法:


我希望这会有帮助

在rails中,有三个数据库集:开发数据库、测试数据库和生产数据库, 您可能正在开发数据库中创建新用户,该用户应该在测试数据库中创建,因为在您进行测试时,将使用测试数据库

确保在测试数据库中创建了新用户

如果您只需要访问需要身份验证的页面,而不需要测试登录表单,那么在Capybara中有一种简单的方法:


我希望这会有帮助

我假设您正在使用水豚进行测试。尝试将
fill_in
更改为标签名称,而不是字段名称。例如:

fill_in "Login", :with => @user.email
fill_in "Password", :with => @user.password

对于你的应用程序来说,这些可能是不同的——只需替换你的字段标签实际被调用的内容(当你转到projects\u路径时在屏幕上看到的内容)。另外,不需要括号。

我假设您正在使用水豚进行测试。尝试将
fill_in
更改为标签名称,而不是字段名称。例如:

fill_in "Login", :with => @user.email
fill_in "Password", :with => @user.password

对于你的应用程序来说,这些可能是不同的——只需替换你的字段标签实际被调用的内容(当你转到projects\u路径时在屏幕上看到的内容)。此外,不需要括号。

您应该使用cucumber来实现此目标

  @javascript
  Scenario Outline: Show or not dasboard
    Given the following user records
      | email                | password  | login    |
      | admin@mail.com       | password  | admin    |

    When I am on the home page
    And I fill in "user_email" with "<login>"
    And I fill in "user_password" with "<password>"
    And I press "Sign in"
    Then I should <flash>

    Examples:
      | login          | password | flash                         |
      | admin@mail.com | password | see "Signed in successfully." |
@javascript
场景大纲:显示或不显示dasboard
给定以下用户记录
|电子邮件|密码|登录|
| admin@mail.com|密码|管理员|
当我在主页上时
我在“用户电子邮件”中填写“”
我用“”填写“用户密码”
然后我按“登录”
那我应该
示例:
|登录|密码|闪存|
| admin@mail.com|密码|请参阅“成功登录”|

您应该使用cucumber来实现此目标

  @javascript
  Scenario Outline: Show or not dasboard
    Given the following user records
      | email                | password  | login    |
      | admin@mail.com       | password  | admin    |

    When I am on the home page
    And I fill in "user_email" with "<login>"
    And I fill in "user_password" with "<password>"
    And I press "Sign in"
    Then I should <flash>

    Examples:
      | login          | password | flash                         |
      | admin@mail.com | password | see "Signed in successfully." |
@javascript
场景大纲:显示或不显示dasboard
给定以下用户记录
|电子邮件|密码|登录|
| admin@mail.com|密码|管理员|
当我在主页上时
我在“用户电子邮件”中填写“”
我用“”填写“用户密码”
然后我按“登录”
那我应该
示例:
|登录|密码|闪存|
| admin@mail.com|密码|请参阅“成功登录”|

当我打电话给用户时,您可以发布
:user的工厂定义吗?
您可以发布
:user的工厂定义吗。谢谢你的链接。但是
Mysql2::错误:超过了锁等待超时;尝试重新启动事务:更新
users'SET
last\u sign\u at
='2012-01-17 13:52:11'、
current\u sign\u at
='2012-01-17 13:52:11'、
last\u sign\u in\u ip
='127.0.0.1'、
current\u sign\u sign\u-in\u-in\u-ip
='127.0.0.0.1'、
更新时间:
='2012-01-17 13:52:11',其中
用户
id
=1`当我使用
user=FactoryGirl时。当我调用user时创建(:user)登录名为(user,:scope=>:user)
。在工厂之后,我从数据库获取记录。谢谢你的链接。但是
Mysql2::错误:超过了锁等待超时;尝试重新启动事务:更新
users'SET
last\u sign\u at
='2012-01-17 13:52:11'、
current\u sign\u at
='2012-01-17 13:52:11'、
last\u sign\u in\u ip
='127.0.0.1'、
current\u sign\u sign\u-in\u-in\u-ip
='127.0.0.0.1'、
updated_在
=“2012-01-17 13:52:11”当我使用
user=FactoryGirl.create(:user)登录为(user,:scope=>:user)
cucumber与任何事情都有什么关系。在rspec中,你可以做得很好。cucumber和任何东西都有什么关系。在rspec中,您可以做得很好。