我想知道如何为混合到几个类中的模块编写单元测试,但不太知道如何去做:
我是否通过在包含它们的类的测试文件之一中编写测试来测试实例方法(似乎不正确),或者您可以以某种方式将所包含方法的测试保留在特定于模块的单独文件中吗?
同样的问题也适用于类方法。
我是否应该像普通的 Rails 模型那样为模块中的每个类都有一个单独的测试文件,或者它们是否存在于通用模块测试文件中(如果存在)?
恕我直言,您应该进行功能测试覆盖范围,以覆盖模块的所有用途,然后在单元测试中单独测试它:
setup do
@object = Object.new
@object.extend(Greeter)
end
should "greet person" do
@object.stubs(:format).returns("Hello {{NAME}}")
assert_equal "Hello World", @object.greet("World")
end
should "greet person in pirate" do
@object.stubs(:format).returns("Avast {{NAME}} lad!")
assert_equal "Avast Jim lad!", @object.greet("Jim")
end
如果您的单元测试良好,您应该能够对它所混合的模块中的功能进行冒烟测试。
Or…
编写一个测试助手,断言正确的行为,然后将其用于混合的每个类。用法如下:
setup do
@object = FooClass.new
end
should_act_as_greeter
如果您的单元测试良好,这可以是对预期行为的简单冒烟测试,检查是否调用了正确的代表等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)