使用 Jest 测试 JavaScript 中的函数调用
在前端开发中,我们经常需要测试我们编写的功能。随着 JavaScript 项目的复杂程度不断提高,测试已经变得越来越重要。在这里,我们将介绍 Jest,一个用于 JavaScript 的测试框架,它一个简单却功能强大的测试工具。我们将学习如何使用 Jest 来测试 JavaScript 中的函数调用。
安装 Jest
首先,我们需要安装 Jest。我们可以使用 npm 安装 Jest。在终端中运行以下命令:
npm install --save-dev jest
编写测试
在开始编写测试之前,我们需要了解一个概念:‘单元测试’。单元测试是对程序中最小可测试单元的测试工作,一般是对某个函数进行测试。单元测试的目的是发现已经存在的错误和规避潜在错误。在 Jest 中,每个测试都是一个函数。它们由 it 或 test函数来定义。例如:
function sum(a, b) {
return a + b;
}
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});Jest 提供了很多函数来验证定义的函数,例如,我们使用 expect 和 toBe 函数进行验证。在上面的例子中,我们测试了 sum 函数,确保它正确地返回了 3。
在 Jest 中,你可以为每个模块编写多个测试用例。
使用 Mock
Mock 是一个模拟对象的工具,通常使用它来代替一个真实的对象,以便使用测试中定义的数据和函数。Mock 可以用于代替异步调用和依赖外部库的函数。这是一个需要 mock 的示例函数:
// www.javascriptcn.com code example
function getUser(callback) {
const user = {
firstName: 'John',
lastName: 'Doe',
};
setTimeout(() => {
callback(user);
}, 1000);
}在这个函数中,我们使用 setTimeout 函数来模拟异步调用并将结果传递给回调。
在测试中,我们希望立即获得结果,而不用等待 1 秒钟。下面是我们如何使用 Jest 的 jest.fn() 函数来创建 Mock。
// www.javascriptcn.com code example
test('Mock getUser function', () => {
const mockCallback = jest.fn();
getUser(mockCallback);
expect(mockCallback.mock.calls.length).toBe(1);
expect(mockCallback.mock.calls[0][0]).toEqual({
firstName: 'John',
lastName: 'Doe'
});
});在这里,我们首先使用 jest.fn() 函数创建 mockCallback 函数。然后我们调用 getUser 函数,并将 mockCallback 作为参数传入。在 expect 语句中,我们可以检查 Mock 函数的调用次数和传递给它的参数。
其他 Jest 函数
Jest 还提供了很多其他有用的函数,例如:
.toEqual()函数用于检查对象是否相等.not.函数用于取反测试结果.toThrow()函数用于检查是否抛出了异常.toBeGreaterThan()和.toBeLessThan()函数用于检查数字大小.toContain()函数用于检查字符串或数组是否包含某个元素
总结
Jest 是一个强大的 JavaScript 测试框架,它可以用于测试函数调用、异步调用、mock 函数等。通过单元测试,我们可以更好地理解并发现我们的代码中的错误。Jest 还提供了非常多的工具和函数,可以使我们的测试工作更加高效。在使用 Jest 时,我们应该着重关注代码的质量和测试代码的易读性,以便在提高代码质量的同时,减少我们的测试代码所需的复杂度。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/654d9dad7d4982a6eb709f19