매우 간단한 CRUD Rails 3.2.8 앱에서 Rspec을 배우려고합니다. 나는 Michael Hartl의 예를 일반적인 패턴으로 따르고 있고 부분적으로 바깥쪽에 대해서는 오이가 적당히 성공했습니다. 이제 Twilio SMS 기능을 테스트하고 싶습니다. 우선 기본적인 질문을하지 않았기 때문에 1 루수로 보일 수 없으므로 여기에서 문제를 해결하고 정상적으로 돌아 오기를 기대합니다. 내 응용 프로그램에는 두 가지 모델, 상품 및 가격이 있으며 내 오이 테스트에서 서로 상호 작용하므로 나타납니다. 저는 오이처럼, 그것의 상호 작용을 테스트하기 시작하는 객체가 필요하다는 것을 알고 있습니다. 내 가격 컨트롤러, 나는 #이 방법을 만들어 내 가격 아래로 상품의 가격을 얻을 수 있습니다 참조 :Rspec, FactoryGirl이 ActiveRecord 메소드를 찾을 수 없습니다.
@price = @commodity.prices.build(params[:price])
내가 궁극적으로 특정 상품에 대한 많은 가격을해야합니다 공장을 생성합니다. 그러나 나는 먼저 기초를 다뤄야한다. 자신의 추가 정보에 thoughtbot의 예에 따라 내가 레일 콘솔에서 다음을 시도 해요 :
FactoryGirl.create(:commodity) do |price|
Commodity.prices.build(attributes_for(:price))
end
결과는 다음과 같습니다 NoMethodError : # 흠에 대한 정의되지 않은 메서드`가격이 '나는 RSpec에 또는 공장 소녀 하나를 이해하지 않아야합니다. 여기
FactoryGirl.define do
factory :commodity do
name "corn"
end
sequence :price do |n|
price
date { Time.now }
end
end
내 두 모델은 다음과 같습니다 : 여기 내 기본 factories.rb입니다
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
이를 이해하는 나의 시도는 단순히 레일 콘솔 만에 그것을 할 것입니다 내가 RSpec을 실행할 때 오류가 나타납니다 게다가. 하지만 FactoryGirl 또는 Rspec이 액티브 레코드로 얻는 가격 방법을 사용하지 않는 이유는 무엇입니까? 분명히, 나는 무언가를 이해하지 못하거나 스택, 고맙습니다, 샘에 대한 대답을 발견했을 것입니다.
예, 감사합니다. 모델에 범위를 테스트하고 테스트를 작성하는 데 도움이되는 순차적 모델을 만들기 위해서는 6 가지 가격이 필요합니다. – sam452