如何用rspec模拟

时间:2014-02-02 04:37:59

标签: ruby-on-rails rspec

我不知道我在这里做错了什么:

我的控制员:

class UsersController < ApplicationController
    def index
        User.all
    end
end

我的控制器规范:

  it "" do
    get :index
    User.should_receive(:all) 
  end

然而我收到了这个错误:

  1) UsersController 
     Failure/Error: User.should_receive(:all)
       (<User(id: integer, name: string, email: string, created_at: datetime, updated_at: datetime, password_digest: string, remember_token: string) (class)>).all(any args)
           expected: 1 time with any arguments
           received: 0 times with any arguments

1 个答案:

答案 0 :(得分:0)

只需交换行

it "" do
  User.should_receive(:all) 
  get :index
end
编辑:“should_receive”告诉rspec“从现在开始,直到规范结束,用户应该收到方法:所有至少一次”,然后你调用get:index并且用户实际收到方法

另一种方式(它不起作用的方式),你调用get:index,用户接收方法:all和AFTER你告诉rspec“从现在开始,用户应该至少接收一次方法”,方法被称为在should_receive期望之前,这就是它失败的原因