Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我应该测试gems的功能吗?_Ruby On Rails_Ruby_Testing_Rubygems_Tdd - Fatal编程技术网

Ruby on rails 我应该测试gems的功能吗?

Ruby on rails 我应该测试gems的功能吗?,ruby-on-rails,ruby,testing,rubygems,tdd,Ruby On Rails,Ruby,Testing,Rubygems,Tdd,我正在一个RubyonRails项目中使用DesiveGem,我想知道是应该为它编写测试,还是仅仅假设所有第三方代码都是自己正确测试的 如果我写测试,我应该只做集成测试,还是也添加一些控制器和模型测试是合理的?通常假设总是测试第三方代码 例如,如果您使用ActiveRecord创建Rails模型,那么测试该调用是没有意义的 Model.create!(foo: 'bar') 创建属性foo等于bar的记录。否则,Rails应用程序最终将有大量重复测试 但是,除了测试自己代码的规范外,测试代码与

我正在一个RubyonRails项目中使用DesiveGem,我想知道是应该为它编写测试,还是仅仅假设所有第三方代码都是自己正确测试的


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

通常假设总是测试第三方代码

例如,如果您使用ActiveRecord创建Rails模型,那么测试该调用是没有意义的

Model.create!(foo: 'bar')
创建属性
foo
等于
bar
的记录。否则,Rails应用程序最终将有大量重复测试

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


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

如果您正在重载Desive控制器,然后,您应该测试正在使用的方法的所有功能

如果我们谈论的是Deave,那么我建议您执行一些集成+验收测试,因为Deave对用户不是很友好。Desive出现了许多问题,在几个小时的调试中结束,可以通过一些验收测试继续进行。此外,如果您将OmniAuth与Desive一起使用,则必须进行测试

而且,编写这些测试对您来说非常有用,因此有一天您可能会更改登录逻辑,然后在没有测试的情况下无法运行正在编写的代码