这应该是一个简单的问题,就是找不到导致测试失败的原因。 运行 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/