0

我肯定错过了什么……但是什么!?

在我的规范中,我已经

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
4

1 回答 1

1

我不相信你需要两者User.stub!(:find)...User.should_receive(:find)...因为 should_receive 基本上就像一个存根。我会删除第一个,看看是否会改变行为。

于 2012-10-09T12:38:23.793 回答