【问题标题】:How to rspec custom action with put in rails 3.1.0?如何在 rails 3.1.0 中使用 rspec 自定义操作?
【发布时间】:2012-02-26 04:59:11
【问题描述】:

我们在采购控制器中添加了一个自定义操作批准。操作批准更新采购属性。以下是批准的调用方式:

<% link_to 'Approve', approve_project_sourcing_path(@project, src), :method => :put if need_approve?(src) %>

通过指定 :method => :put,可以更新属性。这是批准失败的 rspec 代码:

it "should approve for vp_eng" do
  session[:vp_eng] = true
  session[:ceo] = false
  proj = Factory(:project)
  u = Factory(:user)
  session[:user_id] = u.id
  src= Factory(:sourcing, :input_by_id => u.id, :approved_by_vp_eng => false, :approved_by_ceo => false)
  put 'approve', :project_id => proj.id, :id => src.id, :sourcing => {:approved_by_vp_eng => true, :approve_vp_eng_id => session[:user_id],
                                                                      :approve_date_vp_eng => Time.now }
  src.reload.approve_vp_eng_id.should == session[:user_id]      
  response.should redirect_to project_sourcing_path(proj, src)      
end

上面代码的问题是 src 没有更新,即使在我们的执行测试中属性按预期更新了。

我们的问题是如何用 put 重新指定批准操作?非常感谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 rspec2


    【解决方案1】:

    自定义更新操作的 rpsec 与 RESTful 更新操作的 rspec 完全相同。不需要 :method => :put 。

    【讨论】:

      猜你喜欢
      • 2012-08-16
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多