【问题标题】:RSpec Controller Test not generating right urlRSpec 控制器测试未生成正确的 url
【发布时间】:2013-06-04 00:30:09
【问题描述】:

我正在尝试为命名空间控制器创建 RSpec 控制器测试,但 rspec 似乎无法检测到嵌套并为 post :create 操作生成正确的路径。

这是我的规范代码:

# for: /app/controllers/admin/crm/report_adjustments_controller.rb
require 'spec_helper'
describe Admin::Crm::ReportAdjustmentsController do
  render_views

  before(:each) do
    signin
  end

  describe "GET 'index'" do
    it "returns http success" do
      get :index
      response.should be_success
    end
  end

  describe "POST 'create'" do
    it "creates with right parameters" do
      expect {
        post :create, report_adjustment: {distributor_id: @ole_distributor.id, amount: "30.0", date: Date.today }
      }.to change(Crm::ReportAdjustment, :count).by(1)
      response.should be_success
    end
  end
end

# routes.rb
namespace :admin do
  namespace :crm do
    resources :report_adjustments
  end
end

对于这段代码,get :index 工作正常,但是当调用post :create 时,会产生以下错误:undefined method 'crm_report_adjustment_url'

为什么 RSpec 足够聪明,可以用get :index 解决问题,但不能用post :create?如何让 RSpec 正确加载正确的路由,即admin_crm_report_adjustments_url

提前致谢。

【问题讨论】:

标签: ruby-on-rails ruby testing rspec rspec-rails


【解决方案1】:

尝试发布到网址:

post admin_crm_report_adjustments_url

# or 

post "/admin/crm/report_adjustments"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多