rspec的语法期望find_by带有sort_by子句

时间:2014-11-18 16:10:53

标签: ruby-on-rails ruby activerecord rspec

使用rspec,我想写下以下内容:

@clients = Client.find_all_by_status('active').sort_by {|client|client['name'].downcase}

被正确调用。

@client = stub_client({ :name => 'abc' })
Client.should_receive(:find_all_by_status).with('active').and_return([@client])

这可以工作,但不测试是否调用了sort_by子句。

是否有语法可以验证对find_all_by_status的调用是否跟随sort_by)?

1 个答案:

答案 0 :(得分:0)

最简单的方法是写出两个期望:

Client.should_receive(:find_all_by_status).with('active').and_return([@client])
Client.should_receive(:sort_by)

此外,我还提到了之前关于使用order而不是sort_by的评论,这是出于性能原因。