使用get和delete运行Rspec Test时,获取错误的参数数量(2表示0)

CCK*_*CCK 9 ruby rspec ruby-on-rails rspec2 rspec-rails

这应该是一个简单的,但却无法找出导致测试失败的原因.运行rspec时,我一直收到以下错误.但在评论"发送"方法后,一切正常.

  1) Messages GET /messages works! (now write some real specs)
     Failure/Error: get target_app_messages_path(@message.target_app.id)
     ArgumentError:
       wrong number of arguments (2 for 0)
     # ./app/controllers/messages_controller.rb:37:in `send'
Run Code Online (Sandbox Code Playgroud)

的routes.rb

resources :target_apps do 
  resources :messages do 
    member do
     post 'send'
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

型号代码

class Message
  include Mongoid::Document
  belongs_to :target_app
end
Run Code Online (Sandbox Code Playgroud)

控制器代码

class MessagesController < ApplicationController
  def index
    ...
  end
  def show
    ...
  end

  ...

  def send
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

/spec/requests/message_spec.rb

describe "Messages" do
  describe "GET /messages" do

  let(:message) do
    FactoryGirl.create(:message)
  end

  it "works! (now write some real specs)" do
    # Run the generator again with the --webrat flag if you want to use webrat methods/matchers
    get target_app_messages_path(message.target_app.id)
    response.status.should be(200)
  end
end
Run Code Online (Sandbox Code Playgroud)

Dav*_*son 22

Ruby中的每个对象都有一个send方法:

http://ruby-doc.org/core-1.9.3/Object.html

通过命名您的操作"发送",您导致名称冲突.尝试将该操作重命名为"sendmessage"或以不同的方式定义它.应该有一种方法可以将URL映射中的"发送"发送到名为"sendmessage"的操作.