【发布时间】:2016-05-19 12:03:17
【问题描述】:
我想测试一个特定的图标是否会显示在一个用户的视图中,该用户的连续性超过 X 天。所以我需要存根User 模型的streak 方法。但我希望它仅基于其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 的那些实例?
【问题讨论】:
-
我不了解 Ruby,但您所描述的它创建了一个“假”,而不是一个存根。我尽量避免它们像瘟疫一样,因为从技术上讲,您必须为它们编写单元测试以确保它们的行为是可预测的。我可能没有正确理解您的问题,但我会编写两个测试并使用两个不同的存根。一个存根是
:uid= 0,另一个测试将使用一个存根,其中:uid是大于或等于1 的某个值。
标签: ruby-on-rails ruby testunit ruby-mocha