当前位置: 首页 > 知识库问答 >
问题:

如何使用工厂女孩和cucumber创建用户记录?

曾鸿振
2023-03-14

我从来没有使用过工厂女孩,我从本周开始测试,所以所有这些新东西都让我疯狂。有人能给我解释一个使用工厂女孩创建唱片的简单方法吗?

下面是用例。我已经使用cucumber创建了一个测试,它创建了一个用户,还创建了其他记录,如帐户、用户类别。现在我正在编写第二个测试用例,其中我说不应该有测试数据(我可以使用从第一个测试创建的数据,但不希望依赖于其他测试用例)。所以我想使用factory girl为我创建一个用户和相关的用户记录。这里是我的测试,它不使用工厂女孩。

@no-database-cleaner
Feature: Managing users parent child relationships
  In order to use portal
  I want to create parent child relationships

  Scenario:  Creating a child user 
    Given I am on the homepage

    When I attempt to sign in with following user account:
      | email address         | password |
      | abc@company1.com   | password |

    Then I should see "abc@company1.com" message on page
    When I follow "All Child Users"
    Then I should see "Add Sub Child"
    When I click "Add Sub Child"
    Then I should see "Child Sub User"
    And I fill in "Email" with "xyztest@gmail.com"
    And I select "Medium" from "user_filter"
    And I choose "abc_id_yes"
    When I press "Create Child User"
    Then I should see "Child User is successfully created."
    And appropriate records should get created for the child user for new abc_id

在步骤定义中,我有如下代码

Then(/^appropriate records should get created for the child user for new abc_id$/) do
  parent_user = User.find_by_email("abc@company1.com")
  user = User.find_by_email("xyztest@gmail.com")
  account = Account.find_by_user_id(parent_user)
  user.default_filter_level.should be_true
  user.ar_id.should be_true
  user.parent_id.should == parent_user.id
  filter = Filter.find_by_user_id(user.id)
  filter.user_id.should == user.id
  filter.abc_id.should be_true
  filter.account_id.should == account.id
end

所以我如何使用工厂女孩来达到同样的结果,这也将创建一个相关的记录。谢谢

共有1个答案

蒋寒
2023-03-14

确实,其他测试不应该依赖于此测试。对于其他场景,添加一个具有其他型号的给定用户的步骤,定义如下:

Given(/^an user with other models exists$/) do
  parent = FactoryGirl.create(:user)
  user = FactoryGirl.create(:user, email: "xyztest@gmail.com" parent_id: parent)
  account = FactoryGirl.create(:account, user_id: user.id)
  FactoryGirl.create(:filter, user_id: user.id, account_id: account.id)
end

在规格/工厂/用户中。rb(可以指定默认属性值,但可以在FactoryGirl.create()调用中重写它们):

FactoryGirl.define do
  factory :user do
    email "abc@company1.com"
    default_filter_level true
    ar_id true
  end
end

在规格/工厂/filters.rb:

FactoryGirl.define do
  factory :filter do
    abc_id true
  end
end

在规格/工厂/客户中。rb(这只是一个空工厂,您可以指定经常需要分配的属性):

FactoryGirl.define do
  factory :account do

  end
end

请注意,在场景的最后一步中,不应测试是否创建了适当的模型:

And appropriate records should get created for the child user for new abc_id

相反,请使用以下内容:

When I follow "All Child Users"
Then the page should have newly created child user
 类似资料:
  • 我正在使用factory girl和capybara的minitest进行集成测试。当我不使用factory girl创建用户对象时,Capybara工作正常,如下所示: 但是一旦我尝试用工厂女孩创建一个用户,奇怪的事情就开始发生,比如访问方法和click_button方法停止工作。例如,这个测试似乎没有任何问题: 这是我的factories.rb: 下面是我得到的实际错误: 但是,如果我删除了u

  • 我有以下代码: 我将添加更多类似的类。与其单独拼出所有这些类,我想学习如何创建一个可以从简单的数据结构创建这些类的工厂。 我该怎么做?我阅读了Metaobject协议文档,但根据文档页面顶部和中间的示例,我不知道如何动态地为我的类指定不同的名称。 我试过: 但最后一行只是抛出了一个错误:

  • 我正在使用ApacheCommonsHttpClient 4.3。x和spring3。我正在尝试将connectionpool与其关联的socketconfig实例连接起来。 http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/impl/conn/PoolingHttpClientConn

  • 我认为这可能与我在这个问题中描述的问题有关。 我不明白为什么在使用Factory Girl创建用户工厂时,Capybara无法在我的rails应用程序上测试注册表单。我不断收到一封电子邮件,邮件已被接收,出现错误。这是我的工厂: 这是我的注册测试: 这是我的test\u助手。rb: 我不太确定这有什么问题。如果我将Capybara方法添加到每一行,它可以一直到达密码字段,但Capybara无法填写

  • 问题内容: 我想构建一个 使用用户名作为参数 的 程序,并创建用户及其主文件夹 (具有一些诸如文件夹之类的硬编码规范,以及诸如用户名之类的安全检查不能是root或现有用户)。 我的应用程序需要创建用户才能授予SSH访问权限。 该程序将使用 sudo 执行。我读过它应该用C或C ++而不是脚本编写,因为脚本很容易被利用。 您能给我 一些建议或好的做法 吗? 我应该使用一些 Pam 库吗?有没有例子?

  • 问题内容: 在创建用户个人资料系统时,我需要一些帮助。我希望它像Facebook或Myspace,在地址后仅包含用户名,没有问号,例如。我已经完成了所有注册,日志记录脚本等工作,但是如何使用上面的URL示例“ / username”转到配置文件? 问题答案: 您将需要创建一个mod重写,它采用第一个目录并将其作为$ _GET参数传递。 尝试这个: 那应该将’/’之后的内容重写为index.php?