【发布时间】:2013-05-30 14:07:05
【问题描述】:
我从来没有用过工厂女孩,我从这周开始测试,所以所有这些新东西都让我抓狂。谁能给我解释一个使用工厂女孩创建记录的简单方法。
这是用例。我已经使用 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
那么我如何使用工厂女孩实现相同的结果,这也将创建关联记录。谢谢
【问题讨论】:
-
向我们展示不起作用的测试。您在这里拥有的东西不会从 FactoryGirl 中受益,因为无需进行任何设置。
-
我想用工厂女孩进行上述测试。你能解释一下为什么工厂女孩对上述测试没有用吗?我只想确保当我在测试之上运行时,应该没有测试数据,如果没有测试数据高于测试失败。所以使用工厂女孩我可以创建/插入记录到表中并使用上述步骤。
-
那么,有一个
Given不见了?如果您可以显示您所看到的错误,这将有助于弄清楚您正在尝试做什么。 FactoryGirl 只是模型的构建器,因此您可能缺少一些模型数据。但除非您向我们展示错误,否则我们不知道是哪一个。
标签: ruby-on-rails cucumber factory-bot