在我的Rails项目中,我通常使用factory_girl
在我的应用中构建/创建用户。我想知道在使用Cucumber,Capybara测试用户与我的应用程序交互时是否可以使用factory_girl
。没有数据库可以保存它们,我只想存储它们的凭据
我可以有很多用户,所以想为每个用户创建工厂(除非有更好的方法可以使用Cucumber)。
在我的支持文件夹中,我可以创建一个工厂文件夹,然后创建一个包含每个用户的.rb文件。
FactoryGirl.define do
factory :user_1 do
username "username"
password "password"
end
end
在我的env.rb
文件中,我要求Factory Girl,但这还不够
require 'factory_girl'
好像在我的功能中我尝试
Then(/^I will enter my credentials$/) do
fill_in 'username', :with => user_1.email
fill_in 'password', :with => user_2.password
click_button 'login-button'
end
我得到了
uninitialized constant user_1
我也有一种感觉,如果要工作,我需要一个可以构建工厂用户的前钩子,但我现在不确定整个设置。
有没有人以这种方式使用factory_girl,或者正如我之前提到的那样,有更好的方法吗?
答案 0 :(得分:1)
你应该能够像这样沸腾
Given(/^I will enter my credentials$/) do
@user = user = FactoryGirl.create(:user)
end
您可以阅读有关此问题的更多信息https://stackoverflow.com/a/16841999/4421094这真的很有帮助
答案 1 :(得分:0)
感谢@MarshallCap的答案,我想出了一个可行的解决方案,想要分享,也许是正确的,或者有更好的方法,但这就是我最终做的,如果这有助于其他人那么大。
首先,我为factory_users
class Users
FactoryGirl.define do
factory :user_1, :class => :users do |u|
u.skip_create
u.username "username1"
u.password "password"
end
end
FactoryGirl.define do
factory :user_2, :class => :users do |u|
u.skip_create
u.username "username2"
u.password "password2"
end
end
end
factory_girl
env.rb
require 'factory_girl'
在我的登录脚本中,在step_definitions中为实例变量分配了一个用户属性的哈希
Then(/^I will enter my credentials$/) do
@user = FactoryGirl.attributes_for(:user_1)
fill_in 'username', :with => @user[:username]
end