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

tom*_*nek 0 ruby rspec ruby-on-rails stub

我有以下代码:

Group.where('name ~* ?', params[:name]).first
Run Code Online (Sandbox Code Playgroud)

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

Group.stub(:where).and_return(mock_model(Group, name: "SomeName"))
Run Code Online (Sandbox Code Playgroud)

导致错误:

Mock "Group_1001" received unexpected message :first with (no args)
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 7

在你的情况下,你应该返回响应的东西first.数组是一个不错的选择.

Group.stub(:where).and_return([mock_model(Group, name: "SomeName")])
Run Code Online (Sandbox Code Playgroud)


sie*_*ied 6

您可以使用stub_chain存根既where和first,然后返回你的对象:

Group.stub_chain(:where, :first).and_return(mock_model(Group, name: "SomeName"))
Run Code Online (Sandbox Code Playgroud)