如何测试一系列交互?

How to test a series of interactions?

我一直在学习如何为 React 应用程序编写自动化测试,它提出了有关如何最好地测试与应用程序的一系列交互的问题。

假设我有一个 React 应用程序,允许用户将学生分配到教室中的座位:Here's an image of what such an app would look like。

我想测试创建一个新学生,将该学生添加到教室中的一个座位,然后将该学生移回中间列中未就座学生的区域(我将其称为花名册).

为此编写测试的最佳方法是什么?拥有一个大型测试用例是否有意义,其中将包括我正在测试的每个交互的断言(创建一个新学生,将其在教室和花名册之间移动)?

或者我应该创建多个案例,其中一个依赖于另一个?换句话说...

测试1)提交表单时检查新学生是否创建成功

测试 2) 使用在测试 1 中创建的学生,将学生移动到教室的座位上

测试 3) 学生现在就座(由于测试 2),将其移回花名册区域

我的另一个问题是 React 测试库是否足以满足此目的。或者这会被视为应该使用 Cypress 编写的端到端测试吗?

非常感谢您的反馈!

您希望您的测试尽可能细化,因为您已经将它们分为 3 个不同的案例。这将使每个人都更容易阅读您的代码。

至于测试库,我会选择 Cypress,它标榜自己是 JavaScript End to End Testing Framework

您在这里通过操纵看似多个组件来测试端到端功能。另一方面,React 测试库似乎专注于以更底层的方法测试单个组件 - 它有可能在长期 运行 上步履蹒跚,但它也可能完成工作。

您描述的过程肯定可以通过 react-testing-library 作为集成测试进行测试。从 docs/faq 开始,它鼓励测试组件树中足够高的组件,而不模拟子组件,以模拟和测试实际用户交互的情况。

另请查看 this Kent C. Dodds blog post .