我想测试一个特定的图标会在视图中显示为条纹超过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
?
答案 0 :(得分:0)
听起来你应该存在特定的实例,而不是类本身。
User.where.not(uid: 1).each do |user|
user.stubs(:streak).returns([8,10])
end
或者也许(我无法在没有更多背景的情况下确定),您可以通过以下方式进行优化:
node.author.stubs(:streak).returns([8,10])