5

随着Rails 5.1的发布,它们包含了系统测试。这意味着我们可以在Rails中测试JavaScript。 我看到Rails指南解释了样本测试以两种方式创建文章:通过系统测试和通过集成测试。何时通过集成测试选择系统测试Rails 5.1?

现在的问题是:在Rails 5.1之前,我正在集成测试中编写复杂的测试用例。但是现在我有两个选择来编写测试用例。 我可以编写测试用例像

test: should create article 
在集成测试

,但我也可以写在系统测试相同的测试情况。

那么我什么时候应该选择系统测试来编写测试用例以及何时选择集成测试呢?

+1

集成测试不使用浏览器,因此您无法在其中测试js。 – MikDiet

回答

5

简短的回答是由MikDiet给出的。对于长时间的答案,请查看关于系统和集成测试的documentation

系统测试允许在真实浏览器或无头驱动程序中运行测试,以测试与应用程序的完全用户交互。

一个快速的经验法则是所有与Javascript交互的测试都需要作为系统测试来运行。但您也可以使用它们来测试您的响应式布局,因为您可以指定浏览器的屏幕大小。

集成测试用于测试应用程序的各个部分如何交互。它们通常用于测试我们应用程序中的重要工作流程。

集成测试不同,因为它们不通过浏览器运行。他们仍然允许您与结果页面的HTML进行交互,但请记住它是静态您输出的输出。

在集成测试中,您主要关注的是控制器操作的行为,而不是用户查看和交互的内容。这部分文档可能会帮助您了解集成测试的全部内容:Functional Tests for Your Controllers

+0

因此,系统测试是功能测试的改进和替代? – Marklar

+1

我不会那么说。系统测试或多或少Minitest相当于RSpec的功能规格。在高层次上,他们几乎是一样的。在一个较低的级别上,系统测试可以更容易设置,现在可能会稍微快一点,因为它们与Rails紧密集成。但据我所知,RSpec正计划将系统测试的API用于它们的功能规格,这将使它们完全相同,只是语法不同。 – jdno