ruby-on-rails - 使用 get 和 delete 运行 Rspec 测试时获取错误数量的参数(2 个为 0)

标签 ruby-on-rails ruby rspec 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'

路线.rb

resources :target_apps do 
  resources :messages do 
    member do
     post 'send'
    end
  end
end

模型代码

class Message
  include Mongoid::Document
  belongs_to :target_app
end

Controller 代码

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

  ...

  def send
    ...
  end
end

/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

最佳答案

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

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

将您的操作命名为“发送”会导致名称冲突。尝试将该操作重命名为“发送消息”或以不同的方式定义它。应该有一种方法可以将 URL 中的“发送”映射到名为“sendmessage”的操作。

关于ruby-on-rails - 使用 get 和 delete 运行 Rspec 测试时获取错误数量的参数(2 个为 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8550078/

相关文章:

ruby - 为什么我不能通过 Homebrew 软件安装 ruby​​ 1.9.3-p488?

ruby-on-rails - 使用 Rails 在 Atom 提要中显示图像?

ruby-on-rails - 如何测试 Controller 规范中的 strong_parameters?

ruby-on-rails - 使用 RSpec 在测试数据库中创建/重新创建迁移生成的记录

ruby-on-rails - 如何在 rails 中通过命令行运行 rake 任务

ruby-on-rails - 我可以对我的 heroku rails 应用程序上的 unicorn::clientshutdown 错误做些什么?

python - Ruby 正则表达式中的符号组名称(类似于 Python)

ruby-on-rails - 类方法和期望参数

ruby-on-rails - sybase 可以与 ruby​​-on-rails 一起使用吗?

ruby-on-rails - 在 Rails 中从 Google/Yahoo 检索 OpenID AX 属性