2012-07-10 26 views
1

我想額外的參數傳遞到一個RSpec測試,因爲這樣(額外PARAMATERS是兩個數組,guest_value和bar_value):將參數傳遞給一個RSpec測試

 it "should create an outing" do 
      lambda do 
       post :create, :outing => FactoryGirl.attributes_for(:outing), :guest_value => [55,66], :bar_value => [66,77] 
      end.should change(Outing, :count).by(1) 
     end 

但是,我的測試完全忽略他們,好像他們甚至不在那裏。

另外,語法:

   post :create, :outing => { FactoryGirl.attributes_for(:outing), :guest_value => [55,66], :bar_value => [66,77] } 

踢了一個錯誤:

NoMethodError: 
    undefined method `each' for nil:NilClass 

這是我的控制器代碼的結果:

def create 
@outing = Outing.new(params[:outing]) 

@outing.user_id = @user.id 

if @outing.save 

    params[:guestvalue].each do |guest_id| 
     @outing.add_guest(guest_id) 
    end 

    params[:barvalue].each do |bar_id| 
     @outing.add_bar(bar_id) 
    end 

    TimeRange.create(:element_id => @outing.id, :element_type => 'outing', :start_time => params[:day][:start_time], :end_time => params[:day][:end_time]) 

    flash[:notice] = "Outing created successfully!" 

    redirect_to @outing 
else 
    flash[:notice] = "Error creating outing!" 
    @outing = Outing.new 
    render(new_outing_path) 
end 

+1

不能是你的電話':guest_value'和':bar_value',而你正在檢查'PARAMS [:guestvalue]'和'PARAMS [:barvalue]'(無下劃線),可它? – DVG 2012-07-10 00:53:47

回答

2

井你絕對是你的d命令的花括號來做你想做的事(把數組傳遞給factorygirl函數)。發佈錯誤,也許我可以幫助更多?

里根

+0

我已經添加了更多我的代碼。希望它有幫助。 – 2012-07-10 00:47:44

+0

':barvalue'或'guestvalue'沒有方法'.each',我假設這是因爲在測試中你將它們命名爲':bar_value'和':guest_value'。希望有幫助 – reagan 2012-07-10 00:52:47

+0

廢話...這是做到了。謝謝。 – 2012-07-10 00:54:44

相關問題