Jest 是一个流行的 JavaScript 测试框架,广泛用于前端和 Node.js 应用的单元测试。它提供了丰富的 API 和断言库,使得编写和运行测试变得简单高效。
Jest 支持多种类型的测试,包括:
Jest 适用于各种 JavaScript 项目,包括但不限于:
假设我们有一个函数 formatDate
,它接受一个日期对象并返回特定格式的字符串。
// formatDate.js
function formatDate(date) {
return date.toISOString().replace('T', ' ').substring(0, 19);
}
module.exports = formatDate;
我们可以编写一个 Jest 单元测试来验证这个函数的正确性。
// formatDate.test.js
const formatDate = require('./formatDate');
test('formats date correctly', () => {
const date = new Date('2023-10-05T14:48:00Z');
expect(formatDate(date)).toBe('2023-10-05 14:48:00');
});
ReferenceError: require is not defined
原因:Jest 默认不支持 CommonJS 的 require
语法,特别是在使用 ES 模块的项目中。
解决方法:
// formatDate.js
export function formatDate(date) {
return date.toISOString().replace('T', ' ').substring(0, 19);
}
// formatDate.test.js
import { formatDate } from './formatDate';
test('formats date correctly', () => {
const date = new Date('2023-10-05T14:48:00Z');
expect(formatDate(date)).toBe('2023-10-05 14:48:00');
});
在 package.json
中添加以下配置:
{
"jest": {
"transform": {
"^.+\\.js$": "babel-jest"
}
}
}
并安装 babel-jest
和 @babel/core
:
npm install --save-dev babel-jest @babel/core
通过以上步骤,你可以轻松编写和运行针对特定时刻格式的 Jest 单元测试,并解决常见的测试问题。
领取专属 10元无门槛券
手把手带您无忧上云