Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 什么';编写与配置匹配的测试(如逐行代码)的用途是什么?_Ruby On Rails_Unit Testing_Testing_Rspec_Shoulda - Fatal编程技术网

Ruby on rails 什么';编写与配置匹配的测试(如逐行代码)的用途是什么?

Ruby on rails 什么';编写与配置匹配的测试(如逐行代码)的用途是什么?,ruby-on-rails,unit-testing,testing,rspec,shoulda,Ruby On Rails,Unit Testing,Testing,Rspec,Shoulda,我一直在想,编写与代码一一匹配的测试是否有用 举个例子:在Rails中,您可以在routes.rb中的一行中定义7个restful路由,使用: resources :products BDD/TDD规定首先测试,然后编写代码。为了测试这一行的全部效果,开发人员提出了宏,例如shoulda: class RoutingTest

我一直在想,编写与代码一一匹配的测试是否有用

举个例子:在Rails中,您可以在routes.rb中的一行中定义7个restful路由,使用:

resources :products
BDD/TDD规定首先测试,然后编写代码。为了测试这一行的全部效果,开发人员提出了宏,例如shoulda:

class RoutingTest
我不是想挑编写宏的人的毛病,这只是我在Rails中看到的一个模式的例子

我只是想知道它有什么用。。。最后,您只是在复制代码,您测试的唯一一件事是Rails工作正常。您还可以编写一个工具,将测试宏转换为实际代码

当我四处询问时,人们回答我:

测试应该记录您的代码,因此编写测试是有意义的,即使只是一行对应一行


你的想法是什么?

对我来说,避免一些重大错误是一个很好的做法

例如,在合并或编辑后,此资源被删除。怎么知道


通过这个测试,您可以立即看到,需要这些资源。如果您想更改或删除它,您需要进行2次更改。不仅一个可能是错误的。

我认为您不应该明确地测试这样的东西


在测试中呈现页面时,表单_for将抱怨路由不存在。然后我加上它。如果是资源路径或命名路径,在我看来这并不重要。之后,当存在多个命名路由时,您可以重构路由文件,以便使用资源而不是多个命名路由。

除了帮助您编写更好的代码之外,还有更多的测试工作要做。您需要确保代码在将来继续工作。这就是这些类型的测试所提供的。

正如我的老板(顺便说一句,他也是一名程序员)所说,这些都是测试的好例子,但有时你只需要知道测试什么。在您的例子中,测试rails是否工作是好的,但正如我们所知,它已经过测试。我们不需要为此编写测试

在我们的开发周期中,我们只对那些不简单/复杂/已经测试过的东西使用测试。假设您在模型上有一个回形针附件。我们不测试它是否已经贴上了,回形针人已经做了测试。您要测试的是您的模型是否可以访问该附件或您附加该附件的过程或其他内容


类似于:)希望这是有意义的

Rails已经对其路由DSL进行了测试。宏的唯一好处是,它测试您是否实际将声明包含在路由文件中,该文件应通过集成测试套件进行隐式测试

请记住,添加测试会添加更多要维护的代码。每次你有一些代码要写的时候,你应该问问自己是否值得花时间来维护/编写测试。然而,当您首先学习测试时,可能更严格一些,因为学习什么值得测试,什么不值得测试需要时间


希望能有帮助。

值得在引擎盖下面看看。它检查由
resources:products
生成的每个路由,即它不只是验证路由文件中是否存在
resources
语句。因此,这并不是一个测试已经测试过的Rails代码的实例。

同意如果忽略此项,错误将在其他地方捕获。但是,如果这是您的代码工作的一个要求,为什么不显式地测试它呢?为什么它会成为您映射产品的一个要求呢?您可能需要有一个类似“/products/12”之类的路径。你可以随心所欲地实现它。
class RoutingTest < ActionController::TestCase
  # simple
  should_map_resources :products
end