【发布时间】:2021-04-29 22:58:39
【问题描述】:
我有计算用户成员数量的用户模型方法。我想通过 MiniTest 对其进行测试。这是我所拥有的:
def member_for
time_diff = Time.current - created_at
result = ActiveSupport::Duration.build(time_diff.to_i).parts
return "Member for #{result[:years]}y, #{result[:months]}m" if result.key?(:years) && result.key?(:months)
if result.key?(:years) && result.key?(:days)
"Member for #{result[:years]}y, #{result[:days]}d"
elsif result.key?(:months)
"Member for #{result[:months]}m"
elsif result.key?(:days)
"Member for #{result[:days]}d"
end
end
我正在尝试编写一些 MiniTest:
test 'member for' do
user.created_at = 2.years.ago + 3.months + 2.days
user.member_for
end
private
def user
@user ||= users(:one)
end
但老实说,我不知道如何比较它是否返回正确的字符串。
【问题讨论】:
-
您期望返回什么方法?
"Member for 2y, 3m",对吧?所以写你的测试要有这个期望。 -
您可以在
MiniTest中使用assert_equal执行此操作。 -
@TomLord 好的,我已经用
assert_equal 'Member for 2y, 3m', user.member_for的最后一行更新了user.created_at = 2.years.ago - 4.months,它可以工作了!谢谢!
标签: ruby-on-rails ruby minitest