【问题标题】:Passing parameters to an rspec test将参数传递给 rspec 测试
【发布时间】:2012-07-10 00:34:03
【问题描述】:

我正在尝试将额外的参数传递给 rspec 测试,因此(额外的参数是两个数组,guest_value 和 bar_value):

        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

结束

【问题讨论】:

  • 当您的控制器正在检查 params[:guestvalue]params[:barvalue](没有下划线)时,不可能是您调用 :guest_value:bar_value,可以吗?

标签: ruby-on-rails rspec


【解决方案1】:

好吧,您肯定需要花括号来让命令执行您想要的操作(将数组传递给 factorygirl 函数)。发布错误,也许我可以提供更多帮助?

里根

【讨论】:

  • :barvalueguestvalue 都没有.each 方法,我假设这是因为在测试中您将它们命名为:bar_value:guest_value。希望有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-25
  • 2015-03-14
相关资源
最近更新 更多