Jest 是一种流行的、开源的单元集成库,用于在 Node.js 环境中为 JavaSript 代码编写和运行单元集测。它易于使用,但包含了大量允许开发人员为各种场景编写健壮式集测的先进特性。
入门
要开始使用Jest,请首先确保在您的 Node.js 项目中拥有一个有效的 package.json 文件。
// package.json
{
"scripts": {
"test": "jest"
},
"devDependencies": {
"jest": "latest"
}
}
// 安装Jest
$ npm install --save-dev jest
// 运行单元集测
$ npm run test
编写单元集测用例
一个典型的单元集测用例应遵循“安排-行为-断言”(AAA)格式:
it("should do something", () => {
// Arrange: Set up the test fixture.
const functionUnderTest = new FunctionUnderTest();
// Act: Perform the action that should be tested.
const result = functionUnderTest.methodUnderTest();
// Assert: Verify the expected behavior.
expect(result).toEqual(expectedValue);
});
使用 Mocking
Jest 内置了丰富的 Mocking 功能,允许开发人员在隔离的环境中编写集测。
jest.spyOn(moduleUnderTest, "methodName");
快照
Jest 快照是一种在集测期间自动将组件输出与预期输出进行匹配的技术。它有助于确保 UI 组件的行为在不同的开发阶段保持一致。
不匹配报告
Jest 为不匹配的快照提供了详细的不匹配报告,说明了预期输出和生成的输出之间的差异。
- Expect: "some expected value"
+ Received: "some generated value"
预期与实际
使用 .toStrictEqual()
断言来检查对象的相等性,其将深度遍历和匹配对象的键值对。
expect(myObj).toStrictEqual({
foo: "bar",
baz: "qux"
});
异步集测
Jest 允许开发人员为异步集测编写并行和串行集测,使用 await
和 waitForPromises()
辅助方法。
持续集成
Jest 可以与持续集成工具配合使用,例如 TravisCI、Jenkins和 GitHub Actions。
结论
Jest 大大简化了 Node.js 代码的单元集成,使开发人员有信心交付高品质的应用程序。其直观且丰富的 API 使得编写健壮且可读的集测变得轻而易举。借助 Mocking、快照和不匹配报告等先进特性,Jest 提升了单元集成的体验,推动了敏捷开发和 TDD 的最佳实操。