gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:01:48 29 4
gpt4 key购买 nike

我从来没有用过工厂女孩,我从这周开始测试,所以所有这些新东西都让我抓狂。任何人都可以向我解释一个使用工厂女孩创建记录的简单方法。

这是用例。我已经使用 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

那么我如何使用 factory girl 获得相同的结果,这也将创建一个关联的记录。谢谢

最佳答案

你是对的,其他测试不应该依赖于这个。对于其他场景,添加具有以下定义的 Given an user with other models exists 步骤:

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

在 spec/factories/users.rb 中(您指定默认属性值,但您可以在 FactoryGirl.create() 调用中覆盖它们):

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

在 spec/factories/filters.rb 中:

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

在spec/factories/accounts.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

关于ruby-on-rails - 如何使用工厂女孩和 cucumber 创建用户记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838410/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com