在功能测试中存根类的特定实例

时间:2016-05-19 12:03:17

标签: ruby-on-rails ruby mocha testunit

我想测试一个特定的图标会在视图中显示为条纹超过X天数的用户。所以我需要对streak模型的User方法进行存根。但是我希望它仅根据特定用户uid来存根方法。测试代码如下。

test "should display an icon for users with streak longer than 7 days" do
    node = node(:one)
    User.any_instance.stubs(:streak).returns([8,10])
    get :show, 
        author: node.author.username, 
        date: node.created_at.strftime("%m-%d-%Y"),
        id: node.title.parameterize
    assert_select ".fa-fire", 1
end

返回值是一个数组,数组中的第一个值是条纹中的天数,第二个值是该条纹中的帖子的数量。

User.any_instance.stubs(:streak).returns([8,10])存根User类的任何实例。如何将其存根以便仅存根:uid => 1

的实例

1 个答案:

答案 0 :(得分:0)

听起来你应该存在特定的实例,而不是类本身。

User.where.not(uid: 1).each do |user|
  user.stubs(:streak).returns([8,10])
end

或者也许(我无法在没有更多背景的情况下确定),您可以通过以下方式进行优化:

node.author.stubs(:streak).returns([8,10])