gpt4 book ai didi

ruby-on-rails - Factory Girl - 如何为具有关联的模型创建工厂?

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:26 25 4
gpt4 key购买 nike

我正在尝试为我的用户模型及其关联创建一个工厂。但是,我似乎无法在我的 Factory Girl 代码中获得正确的语法。我已经通读了 Factory Girl 文档,但似乎无法找到有关我的特定用例的任何帮助。我目前在运行测试套件时收到的错误是:

undefined method `subscription_args' for #<FactoryGirl::SyntaxRunner...

Trait not registered: valid_card_data

这是我的模型和关联:

用户.rb

has_one :subscription
has_one :plan, :through => :subscription
has_many :projects

Project.rb

belongs_to :user

计划.rb

has_many :subscriptions

订阅.rb

belongs_to :plan
belongs_to :user

这是我的 Factory Girl 代码:

FactoryGirl.define do

factory :user do
first_name "Joel"
last_name "Brewer"
email { "#{first_name}.#{last_name}@example.com".downcase }
password "foobar"
password_confirmation "foobar"
user_type "entrepreneur"

subscription { build(:subscription, subscription_args) }

after(:create) do |user|
user.subscription.save!
end
end

factory :subscription do
user
plan_id '4'

## I am trying to access a helper method from support/utilities ##
## This call to valid_card_data doesn't seem to be working... ##

stripe_card_token valid_card_data
email "joel.brewer@example.com"
end

factory :project do
title "Sample Project"
user
end
end

最佳答案

这是我过去的做法。当然不是唯一的方法:

(注意我用的是 cucumber 。)

require 'factory_girl'

FactoryGirl.define do

factory :user do |f|
f.username 'superman'
end

factory :message do |f|
f.association :user
f.content 'Test message content'
end

end

这表明消息工厂应该将消息关联到用户。哪个用户?我在使用时确定:

步骤.rb:

Given(/^there is a user$/) do
@user = FactoryGirl.create(:user)
end

Given(/^the user has posted the message "(.*?)"$/) do |message_text|
FactoryGirl.create(:message, :content => message_text, :user => @user)
end

When(/^I visit the page for the user$/) do
visit user_path(@user)
end

Then(/^I should see "(.*?)"$/) do |text|
page.should have_content(text)
end

我的方法,在使用点指定对这个用例有意义。例如给定一个用户(必须先建立用户)并且该用户发布了一条消息(现在可以建立现有用户与消息的关系)...

这对您来说可能会或可能不会很好,但我就是这样做的。这可能对您有所帮助,也可能没有帮助,但希望如此。

关于ruby-on-rails - Factory Girl - 如何为具有关联的模型创建工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032638/

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