在我的规范中我已经
User.should_receive(:find).with("1").and_return(@user)
并在我的控制器中
User.find(params[:id])
绿灯......正确......
但如果我使用其他方法更改控制器,例如首先:
User.first
甚至
User.all
我也得到了绿灯......我期待像
这样的错误expected: 1 time
received: 0 times
任何人都可以给我一个提示来理解这种行为吗?
非常感谢修改
在这里,您可以找到有关此问题的更多信息:https://gist.github.com/3848429#file_user_controller_spec.rb
编辑2
我的规范现在,但我仍然需要检查方法是调用每个#find ...
describe "GET #show" do
before(:each) do
@user = mock_model(User)
should_authorize(:show, @user)
end
it "assigns the requested user to @user" do
User.should_receive(:find).with("1").twice.and_return(@user)
get :show, id: "1"
end
it "renders the :show template" do
get :show, id: "1"
response.should render_template :show
end
end
答案 0 :(得分:1)
我认为你不需要User.stub!(:find)...
和User.should_receive(:find)...
,因为should_receive基本上就像一个存根。我会删除第一个,看看是否会改变行为。