rSpec - 如何在模型方法中测试选择

时间:2011-07-22 14:29:29

标签: ruby-on-rails rspec rspec-rails

我有一个模型,其方法只返回用户的名字和数量。

class User < ActiveRecord::Base
  def self.list
    select("firstname, qty").order("qty desc").all
  end
end

如何使用rSpec测试返回值?

User.list.should == [?????]

该方法返回一个User对象数组,但只有两个属性。这就是我被困住的地方。

2 个答案:

答案 0 :(得分:3)

由于.list会返回不完整的用户,因此您最好的选择是将其属性作为哈希来提取:

User.list.map { |u| u.attributes }.
    should == [{ :firstname => "John", :qty => 10 }, { ... }]

答案 1 :(得分:1)

factory_girl会干掉这个:

fewer_qty_user = Factory.create(:blank_user, :qty => 100, :firstname => 'Bob')
more_qty_user  = Factory.create(:blank_user, :qty => 200, :firstname => 'Alice')
User.list.should == [more_qty_user, fewer_qty_user]