rSpec - как проверить выбор внутри метода модели - PullRequest
2 голосов
/ 22 июля 2011

У меня есть модель с методом, который возвращает только имя пользователя и количество.

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

как бы проверить возвращаемое значение с помощью rSpec?

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

Метод возвращает массив объектов User, но только с двумя атрибутами. Вот где я застрял.

Ответы [ 2 ]

3 голосов
/ 22 июля 2011

Поскольку .list возвращает незавершенных пользователей, лучше всего вывести их атрибуты в виде хэша:

User.list.map { |u| u.attributes }.
    should == [{ :firstname => "John", :qty => 10 }, { ... }]
1 голос
/ 22 июля 2011

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]
...