0
인 RFQ 컨트롤러에서 만든 : 여기 에 기록 가입 RSpec에 방법 대다 레일 3.1.0 여기
def create
if has_create_right?
@rfq = Rfq.new(params[:rfq], :as => :roles_new)
#save into join table rfqs_standards
params[:rfq][:standard_ids].each do |sid|
@rfq.standards << Standard.find(sid.to_i) if !sid.nil?
end
if @rfq.save
redirect_to URI.escape("/view_handler?index=0&msg=RFQ saved!")
else
flash.now[:error] = "RFQ not saved!"
render 'new'
end
end
end
이
describe "'create'" do
it "should be successful for corp head" do
session[:corp_head] = true
session[:user_id] = 1
s = Factory(:standard)
rfq = Factory.attributes_for(:rfq)
rfq.standards << s
get 'create', :rfq => rfq
response.should redirect_to URI.escape("/view_handler?index=0&msg=RFQ saved!")
end
end
오류 인 RSpec에 코드입니다 :
1) RfqsController 'create' should be successful for corp head
Failure/Error: rfq.standards << s
NoMethodError:
undefined method `standards' for #<Hash:0x6741570>
# ./spec/controllers/rfqs_controller_spec.rb:65:in `block (3 levels) in <top (requi
가입 레코드를 테스트하는 올바른 방법은 무엇입니까? 감사. 테스트의이 부분에서
를 볼 때 새 RFQ 저장됩니다. 이제 문제는 rspec하는 방법입니다. 여기에 조인 테이블에 저장하는 방법에 대한 게시물 - http://stackoverflow.com/questions/8736805/how-to-save-2-id-in-joint-table-for-many-to-many-relationship- in-rails-3-1. – user938363
동의하지만 위의 코드는 모델을 저장하는 방법이 아니라 RSpec 테스트를 수정하는 방법입니다 (더 명확하게 업데이트했습니다). 중첩 된 속성에 대한 주석은 단순히 조인 된 모델의 저장을 구현하는 방법에 대한 주석/제안이었습니다. 당신은 habtm 관계에 대해 중첩 된 속성도 잘 작동하지 않지만, 당신이 자신의 작전에서 얻은 habtm에 대해 말하고 있다는 것은 확실하지 않습니다. – PinnyM
테스트하여 실패했습니다. 오류 : 오류/오류 : '생성', : rfq => rfq NoMethodError : 기대하지 않았을 때 개체가 없습니다! 문제는 rfq (attributes_for)가 객체가 아닌 것과 같습니다. 레일 콘솔에서 rfq가 객체로 만들어지면 rfq.standards <<는 오류없이 실행됩니다. 생성 코드는 새로운 rfq를 만드는 것으로 보입니다. 그러나 rspec 코드가 실패했습니다. 이제 rfq.new (params [: rfq])가 컨트롤러 실행에서 rfq 객체로 처리 될 수 있는지 확인하십시오. 어쨌든 고마워. – user938363