【发布时间】:2015-01-06 00:32:35
【问题描述】:
Rails 支持多种类型的测试:
- 模型测试
- 控制器测试
- 功能测试
- 集成测试
而且,与水豚一起,它还可以支持:
- 验收/集成/功能(取决于作者)测试
在某些网站上,我看到这些验收/集成/功能测试应该只测试特定的流程,而将边缘情况留给其他类型的测试。例如:
集成测试用于测试任意数量的控制器之间的交互。它们通常用于测试应用程序中的重要工作流程。
http://guides.rubyonrails.org/testing.html#integration-testing
虽然这些非常适合测试高级功能,但请记住,功能规范运行缓慢。无需使用 Capybara 测试通过您的应用程序的所有可能路径,而是将测试边缘案例留给您的模型、视图和控制器规范。
http://robots.thoughtbot.com/how-we-test-rails-applications
但我也看到了类似的东西:
您的目标应该是为应用中的每个流程编写一个集成测试:确保每个页面都被访问,每个表单一次正确提交一次,一次错误提交,并针对不同类型的用户测试每个流程,这些用户可能拥有不同的权限(以确保他们可以访问他们被允许访问的页面,而不是访问他们不允许访问的页面)。您应该对您的应用进行大量集成测试!
https://www.learnhowtoprogram.com/lessons/integration-testing-with-capybara
那么,这是我的问题:在 rails 中,我是否应该在 capybara(或集成)测试中包含用户输入表单错误流?
或者您认为编写视图测试来测试闪存消息的存在、使用 assigns 助手通过控制器测试测试失败流以及仅通过验收/集成/功能测试测试成功流是否足够?
编辑接受的答案是由于 cmets。
【问题讨论】:
标签: ruby-on-rails testing capybara integration-testing acceptance-testing