如何存根:Rspec中的哪个方法?

时间:2013-03-13 11:03:54

标签: ruby-on-rails ruby rspec stub

我有以下代码:

Group.where('name ~* ?', params[:name]).first

在这种情况下如何存根where方法?

Group.stub(:where).and_return(mock_model(Group, name: "SomeName"))

导致错误:

Mock "Group_1001" received unexpected message :first with (no args)

2 个答案:

答案 0 :(得分:7)

在您的情况下,您应该返回响应first的某些内容。数组是一个不错的选择。

Group.stub(:where).and_return([mock_model(Group, name: "SomeName")])

答案 1 :(得分:6)

您可以使用stub_chain存根wherefirst,然后返回您的对象:

Group.stub_chain(:where, :first).and_return(mock_model(Group, name: "SomeName"))