Ruby on rails 3 执行测试后的项目数量与预期数量不匹配

Ruby on rails 3 执行测试后的项目数量与预期数量不匹配,ruby-on-rails-3,cucumber,Ruby On Rails 3,Cucumber,我的数据库中已经存在一个用户(管理员)。我运行cumber测试并创建另一个用户。我期望在执行一个场景后有2个用户,但得到1个。我的错在哪里?如果不是通过cucumber创建的,则cucumber不会将数据库中的现有实体计算在内。您的测试数据库在每次测试之前都会被清除。您必须创建管理员作为Cucumber步骤的一部分,可能使用“Background:”是最好的方法 编辑要以管理员身份登录,请执行以下操作: Background: Given I am an admin And I have

我的数据库中已经存在一个用户(管理员)。我运行cumber测试并创建另一个用户。我期望在执行一个场景后有2个用户,但得到1个。我的错在哪里?如果不是通过cucumber创建的,则cucumber不会将数据库中的现有实体计算在内。

您的测试数据库在每次测试之前都会被清除。您必须创建管理员作为Cucumber步骤的一部分,可能使用“Background:”是最好的方法

编辑要以管理员身份登录,请执行以下操作:

Background:
  Given I am an admin
  And I have logged in

  Scenario: Create a user
    Given I go to the new user page
    And I fill in "email" with "test@user.com"
    And I submit the form
    Then there should be 2 users
希望您能够自己编写这些步骤定义。“给定我是管理员”将创建一个管理员用户,“我已登录”将进入登录页面,以管理员身份登录。

这是我的代码: 其特点是:

Feature: "Manage Users"
  Background: I should sign in firstly
    Given I am have an administrator
    When I am on the login_page
    And I fill in "session_login" with "administrator"
    And I fill in "session_password" with "password"
    And I press "Sign In"
    Then I should see "You are logged in"
分步骤:

Given /^I am have an administrator$/ do
  User.create!(:login => 'administrator', :locale => 'en', :password => 'password', :email => 'admin@gmail.com')
  User.find_by_login('administrator').should_not be nil
end
我无法登录。

已修复! 我将数据库策略从“事务”更改为“截断”。
线程已完成

如果已清除,如何使用管理员帐户登录?当我在创建另一个用户之前执行行“给定我有一个用户”时,我得到了1(true)。这种行为可能是由于Test::Unit干扰了Fixture造成的吗?谢谢。现在工作。我可以在场景之间共享步骤吗?如果您想正确测试应用程序,那么场景应该彼此隔离。我不确定是否有办法做到这一点,但如果有,这不是最好的做法。好的,有可能从cucumber场景中调用Rake任务吗?我发现当我尝试登录时,我的数据库不包含任何用户,但我在第一步就创建了它。可能是我没有正确配置环境。