从Rails模型/装饰器编写方法测试的正确方法?

时间:2015-08-21 17:31:40

标签: ruby-on-rails ruby unit-testing minitest

我正在使用rails Draper gem,现在正在使用Rails的内置MiniTest框架测试我的装饰器方法。

我的full_name类中有一个user_decorator.rb方法,并希望为此方法编写测试。我的first_name模型上还有last_nameUser个属性。

我的问题是,测试我得到正确输出的正确方法是什么?

方法如下:

def full_name
    first_name + ' ' + last_name
end

以下哪种方法是测试我从这种方法得到正确输出的正确方法?

assert_equal 'Jourdan Bul-lalayao', @jourdan.full_name 

assert_equal @jourdan.first_name + ' ' + @jourdan.last_name, @jourdan.full_name

对我而言,第一种选择似乎是正确的;在第二个选项中,感觉就像我只是再次编写函数并针对该函数测试实际函数。

尽管如此,我希望有任何想法,也许还有其他可能更好的建议!

1 个答案:

答案 0 :(得分:1)

取决于您如何填充用户。

第二个选项再次编写方法,因为您正在测试方法的输出并指定其行为。

第一种方式的(潜在)问题:

对于该特定用户,输出可能相同,但如果方法实现更改为包含中间名,则对于具有中间名的用户可能会有所不同。如果您的测试数据没有改变,您可能会得到误报。