使用 Jest 进行测试
Backstage用途玩笑满足我们所有的单元测试需求。
Jest 是 Facebook 专为 React 打造的单元测试框架,它沿袭了其他经典 Node.js 单元测试相关框架和库,如摩卡,茉莉花和柴.
运行测试
运行所有测试:
yarn test
运行单个测试(例如MyComponent.test.tsx
):
yarn test MyComponent
同时运行MyComponent.test.tsx
和MyControl.test.tsx
测试套件:
yarn test MyCo
注意:如果console.logs
请仅运行您正在进行的单项测试。这是 Jest 中的一个错误.
命名测试文件
测试应命名为[filename].test.ts
或[filename].test.tsx
如果它包含 JSX(很多 React 测试都是这种情况,例如组件)。
例如,对**Link.tsx
文件中存在Link.test.tsx
**.
##第三方依赖
Jest 有自己的内置断言库,其中包括expect
因此没有必要import
不过,由于断言库会简单地抛出错误,如果需要,导入第三方库也是可行的(如 Chai 或西农).
我们使用轻便的React 测试库来呈现 React 组件。
测试工具
TODO.
编写单元测试
以下原则是判断你是否在编写高质量前端单元测试的良好指南。
错误的单元测试原则
没有单元测试比糟糕的单元测试更好。
编写糟糕的单元测试:
- 给人一种你的代码比实际代码更安全或更可靠的错觉。 * 功能相当于一个糟糕的注释,因为它会导致下一个开发人员做出错误的假设。 * 由于无关的代码更改需要更新 单元测试,因此会增加未来的工作。
输入/输出原则
单元测试验证输出与预期输入是否匹配。
对于后端,这意味着当您提供配置 X 时,对象会响应 Y;对于前端,这意味着当您为组件提供属性 X 时,可视化功能会响应 Y。
黑箱原理
一个好的单元测试不会告诉对象它应该如何工作,而应该 > 只比较输入和输出。
考虑一个表单的单元测试。 一个好的单元测试不会测试表单字段的顺序,而是验证表单字段的输入是否会在点击提交时导致某个后端调用。
可扩展性原则
单元测试的质量与代码变化的程度成正比。
这一点经常被忽视!单元测试不是验证代码是否从未改变的测试。 劣质的单元测试是这样编写的:每当您对代码进行微小改动时,您就必须更新单元测试。 一个好的单元测试套件允许在以下方面有很大的灵活性如何代码的编写方式,以便将来进行重构时无需触及原始单元测试。