使用Rails 3.0,我在我的所有单元测试中都会看到一小段代码。
是否存在将共享单元测试代码放入单元和功能测试中的常见位置?我宁愿将它合并到所需的文件中,只需要进行单元测试。
我是一般的测试实践的新手。在Rails中测试验证是否常见(例如,test:validates_presence_of:name)?我在模型上测试验证的大部分功能都基本相同(只需交换进出正确的夹具和属性名称)。看起来不是很干。寻找重构的方法。
感谢。
答案 0 :(得分:1)
您可以将代码放在test / test_helper.rb文件中。 您应该已经找到了一个看起来像这样的代码片段
class ActiveSupport::TestCase
self.use_transactional_fixtures = true
self.use_instantiated_fixtures = false
end
如果代码应该在所有测试中使用,则可以在ActiveSupport::TestCase
类中添加方法。否则,将它们包装成Module
并在需要时混合模块。
测试验证不是为了测试验证本身(validates_presence_of
宏已在Rails代码库中测试过),这是一个很好的做法,但要确保代码中的机会不会影响您的类业务。< / p>
例如,可能存在需要仅在特定事件中触发的验证。或者您可能希望确保没有人删除您在该特定模型上的超级秘密验证。
如果您想测试模型验证,我建议您查看shoulda。 Shoulda提供了几种方便的方法来测试您的验证。
class PostTest < ActiveSupport::TestCase
should belong_to(:user)
should validates_presence_of(:id)
end