在Rails路由中测试什么?

bra*_*che 9 ruby-on-rails rails-routing

我很好奇人们认为对路线进行充分/彻底的测试.我工作的人似乎想要在我们的路线文件中断言每条路线,无论标准如何.我觉得这是浪费时间,但也许我错了,我不知道这有什么价值.

在某些情况下,我可以在路由中看到一些价值.我们仍然有一些响应GET和POST请求的动作,虽然我一直想要摆脱它们.我们没有任何关于lambdas或任何东西的疯狂约束,但是如果我们这样做,那似乎值得测试.

但对于正常的资源定义?

resources :foo, only: [:index, :show]
Run Code Online (Sandbox Code Playgroud)

我们断言这两条路线都存在,我们声称它们是GET并且它们会转到正确的控制器/动作.这有什么意义吗?感觉就像我们刚刚测试Rails一样.

在一个稍微相关的问题上,我更喜欢定义像上面那样的资源路径(包括only: [:index, :show]部分).resources :foo如果在该控制器上只有索引/显示操作,那么仅在路由文件中定义是否有任何后果?

在我看来,它可能只是使用更多的时间和/或内存,但它是否也是一个安全问题,或者是我不知道的非常糟糕的事情?

Dav*_*ton 5

测试路由的最大原因不是对Rails进行双重测试,而是要验证面向公众的API.

这减少了广告入口点的回归,无论它们采取或返回的数据如何.

什么级别的是开放的一些争论,以及测试这些; 测试路线本身是否有价值,或者仅验证进/出的数据是否有意义?这样做测试相同的路线,我认为更有价值 - 但速度较慢.

我倾向于只在以下情况下直接测试路线:

  • 它们有点时髦,例如,不是沼泽标准的路线
  • 必须拒绝一些路线
  • 在初步开发期间.

初步路线测试一旦以其他方式进行测试,通常会被删除.