我应该测试宝石的功能吗?

时间:2013-12-17 14:15:43

标签: ruby-on-rails ruby testing rubygems tdd

我正在使用Ruby on Rails项目中的devise gem,我想知道我是否应该为它编写测试,或者只是假设所有第三方代码都经过了适当的测试。

如果我写测试,我应该只进行集成测试还是添加一些控制器和模型测试也是合理的?

2 个答案:

答案 0 :(得分:4)

通常假设始终测试第三方代码。

例如,如果使用ActiveRecord创建Rails模型,那么测试调用

是没有意义的
Model.create!(foo: 'bar')

创建属性foo等于bar的记录。否则你的Rails应用程序最终会有大量的重复测试。

但是,除了您自己代码的规范之外,测试代码与第三方库的集成是一个好习惯。

请注意,使用单词集成,我并不严格意味着以Rails使用它们的方式进行集成测试。例如,如果您创建一个自定义命名范围,并且您编写了一个测试,该测试创建了一些记录并测试了命名范围仅返回预期记录,严格来说这实际上是一个集成测试(尽管它在单元测试中被定义为单元测试) Rails项目的文件夹)。

答案 1 :(得分:1)

如果您正在重载Devise控制器,那么您应该测试您正在使用的方法的所有功能。

如果我们谈论Devise,那么我建议你进行一些集成+验收测试,因为Devise对用户不是非常用户友好。与Devise有很多问题,在几个小时的调试中结束,这可以通过一些验收测试得到坚持。此外,如果您正在使用OmniAuth和Devise,那么必须进行测试。

而且,编写这些测试对你来说很有用,这样有一天你可能会改变逻辑中的日志记录,然后你就无法运行你正在编写的代码而不进行测试。