我正在尝试进行此类测试:
it "render form to update an bundle with a specific id" do
bundle = mock_model(Bundle)
Bundle.stub!(:find).with("1") { bundle }
get :edit, :locale => "en", :id => 1
Bundle.should_receive(:find).with("1").and_return(bundle)
end
来自控制器的代码:
class BundlesController < ApplicationController
# GET /bundles
# GET /bundles.json
.....
# GET /bundles/1/edit
def edit
@bundle = Bundle.find(params[:id])
end
.....
end
但是测试失败并显示消息:
BundlesController Bundle更新渲染表单以更新具有特定id的bundle 失败/错误:Bundle.should_receive(:find).with(“1”)。and_return(bundle) ().find( “1”) 预计:1次 收到:0次 #./spec/controllers/bundles_controller_spec.rb:60:in'块(3级)in'
任何人都可以帮助我吗? 谢谢!
答案 0 :(得分:2)
这里有一些问题,也许会发布更多代码。
首先,您要在Bundle
上设置存根和期望,然后向我们展示加载Role
的代码。
其次,你在考试结束时打电话给#should_receive
。此方法设置了对测试之后的代码的期望。除非你有一些你没有向我们展示的隐藏回调,否则这总会失败。颠倒顺序。
Bundle.should_receive(:find).with("1").and_return(bundle)
get :edit, :locale => "en", :id => 1