Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 在rails中,我应该在capybara(或集成)测试中包含用户输入表单错误流吗?_Ruby On Rails_Testing_Capybara_Integration Testing_Acceptance Testing - Fatal编程技术网

Ruby on rails 在rails中,我应该在capybara(或集成)测试中包含用户输入表单错误流吗?

Ruby on rails 在rails中,我应该在capybara(或集成)测试中包含用户输入表单错误流吗?,ruby-on-rails,testing,capybara,integration-testing,acceptance-testing,Ruby On Rails,Testing,Capybara,Integration Testing,Acceptance Testing,Rails支持几种类型的测试: 模型试验 控制器测试 功能测试 集成测试 而且,有了水豚,它还可以支持: 验收/集成/功能(取决于作者)测试 在一些站点上,我看到这些验收/集成/功能测试应该只测试特定的流,而将边缘案例留给其他类型的测试。例如: 集成测试用于测试任意数量控制器之间的交互。它们通常用于测试应用程序中的重要工作流 虽然这些对于测试高级功能非常有用,但请记住,功能规格运行缓慢。不要使用Capybara测试应用程序中的所有可能路径,而是让测试边缘情况取决于您的模型、视图和控制器

Rails支持几种类型的测试:

  • 模型试验
  • 控制器测试
  • 功能测试
  • 集成测试
而且,有了水豚,它还可以支持:

  • 验收/集成/功能(取决于作者)测试
在一些站点上,我看到这些验收/集成/功能测试应该只测试特定的流,而将边缘案例留给其他类型的测试。例如:

集成测试用于测试任意数量控制器之间的交互。它们通常用于测试应用程序中的重要工作流

虽然这些对于测试高级功能非常有用,但请记住,功能规格运行缓慢。不要使用Capybara测试应用程序中的所有可能路径,而是让测试边缘情况取决于您的模型、视图和控制器规格

但我也看到这样的情况:

你的目标应该是为通过你的应用程序的每个流编写一个集成测试:确保每个页面都被访问,每个表单都被正确提交一次,也被错误提交一次,并为可能拥有不同权限的不同类型的用户测试每个流(以确保他们可以访问允许访问的页面,而不是访问不允许访问的页面)。你应该对你的应用进行大量的集成测试

所以,这就是我的问题:在rails中,我应该在capybara(或集成)测试中包含用户输入表单错误流吗

或者,您认为编写视图测试来测试闪存消息的存在性、通过控制器测试和分配助手测试失败流以及通过验收/集成/功能测试仅测试成功流就足够了吗


编辑接受的答案是由于评论。

用户输入表单错误由in-Rails处理。因此,您可以使用来覆盖这些错误。但是这些类型的测试只验证您的模型上是否存在验证。我不确定这些类型的测试除了允许您在是的,活动记录验证可以通过单元测试进行测试,尽管我倾向于不这样做。我认为DHH对此的说法是有道理的:“不要测试标准的活动记录关联、验证或作用域。”.关于capybara测试,我想知道我是否应该测试错误是否正确显示。你认为如何?可能是一个单一的UI测试,测试flash消息是否普遍存在。如果flash消息作为应用程序布局的一部分出现,则不需要针对每个单独的用例进行测试。我通常更喜欢havi将输入附近的错误消息显示为错误,而不是一般的闪存消息。每个表单只测试一个失败案例是一个好主意吗?有很多方法可以处理错误消息,包括客户端javascript。我只会为每个表单测试一个实例。如果错误显示代码是模块化的,您可以只测试模块我很喜欢尝试提取用于显示表单错误的代码并对该部分进行单元测试的想法,我会尝试的。谢谢。