不知怎的,我无法弄清楚为什么我的请求规范因错误而失败:
参数数量错误(0表示1)
当我在show方法中使用find_by_id时。
这是我的show方法
def show
@message = Message.find_by_id(params[:id])
# rest of code
end
这是我的要求规范
require 'spec_helper'
describe "message pages" do
subject { page }
before do
@message = FactoryGirl.create(:message)
end
it "should show message page properly" do
visit message_path(@message.id)
page.should have_content(@message.content) # this fails as message path ends up with wrong number of arguments error
end
end
如果我将find_by_id()更改为find(),那么一切正常。我需要find_by_id,因为我不想提出404错误而是想检查是否nil然后将用户引导到适当的页面。
答案 0 :(得分:2)
你可以尝试:
visit message_path(@message)
或
visit message_path(id: @message.id)
并报告回来
答案 1 :(得分:0)
而不是“find_by_id”(顺便说一句,已经弃用了......)你可以使用find
并从异常中解救出来。这更简单。
def show
begin
@message = Message.find(params[:id])
rescue ActiveRecord::NotFound
do whatever you want on missing message
return
end
# rest of code
end