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

发布于 2024-11-25 09:59:08 字数 293 浏览 1 评论 0原文

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

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

我如何使用 rSpec 测试返回值?

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

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

I have a model with a method that returns just the first name of a user and a qty.

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

how would I test the return value with rSpec?

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

The method returns an array of User objects, but with only two attributes. This is where I'm stuck.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

卸妝后依然美 2024-12-02 09:59:08

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

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

Since .list returns incomplete Users, your best bet may be to pull out their attributes as a Hash:

User.list.map { |u| u.attributes }.
    should == [{ :firstname => "John", :qty => 10 }, { ... }]
桃酥萝莉 2024-12-02 09:59:08

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]

factory_girl will DRY this right up:

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]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文