我想在一個非常簡單的CRUD Rails 3.2.8應用程序中學習Rspec。我遵循邁克爾哈特爾的例子的一般模式,並且在外面部分地用黃瓜取得了適度的成功。現在我想測試一個Twilio SMS功能,並且似乎無法到達第一個基地,主要是因爲我沒有提出正確的問題,所以我希望在這裏糾正並重新走上正軌。 我的應用程序有兩種模型,商品和價格,他們在我的黃瓜測試中互相交流,所以它出現了。我知道,就像黃瓜一樣,我需要一個物體開始測試它的相互作用。在我的價格控制,我看到,我可以得到商品的價格與低於我的價格#創建方法:Rspec,FactoryGirl找不到ActiveRecord方法
@price = @commodity.prices.build(params[:price])
我最終要生成一個工廠,將有許多的價格對於一個給定的商品。但我想先到達基地。繼其自述thoughtbot的例子我試圖在軌控制檯以下:
FactoryGirl.create(:commodity) do |price|
Commodity.prices.build(attributes_for(:price))
end
結果是:NoMethodError:未定義的方法`價格爲# 嗯,我一定不能瞭解或者Rspec的或工廠女孩。這是我的基本factories.rb:
FactoryGirl.define do
factory :commodity do
name "corn"
end
sequence :price do |n|
price
date { Time.now }
end
end
這裏是我的兩個型號:
class Commodity < ActiveRecord::Base
attr_accessible :description, :name
has_many :prices
end
MOST_RECENT = 5
class Price < ActiveRecord::Base
attr_accessible :buyer, :date, :price, :quality, :commodity_id
scope :most_recent, lambda { order("id desc").limit(MOST_RECENT) }
belongs_to :commodity
end
我試圖瞭解這是這樣做只是在Rails的控制檯,但是當我運行rspec的錯誤也出現以及。但爲什麼FactoryGirl或Rspec似乎沒有使用我用Active Record獲得的價格方法?顯然,我不理解的東西,或者我會在Stack上找到答案,thanx,sam
是的,謝謝!我需要六個價格來測試模型中的範圍,並使它們順序地幫助我編寫測試。 – sam452