jest测试核心
Jest 是一个流行的 JavaScript 测试框架,提供了强大的功能来编写、运行和管理测试。以下是 Jest 测试的一些核心概念和示例代码:
1. 测试用例(Test Cases)
测试用例是 Jest 中的基本单元,用于验证代码的行为是否符合预期。
// sum.js function sum(a, b) { return a + b; } module.exports = sum; // sum.test.js const sum = require('./sum'); test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
这个示例中,我们编写了一个简单的 sum 函数,并使用 Jest 编写了一个测试用例来验证函数的正确性。
2. 断言(Assertions)
Jest 提供了一组丰富的断言方法,用于验证代码的输出是否符合预期。
// example.test.js test('two plus two is four', () => { expect(2 + 2).toBe(4); }); test('object assignment', () => { const data = { one: 1 }; data['two'] = 2; expect(data).toEqual({ one: 1, two: 2 }); });
在这个示例中,我们使用了 toBe 和 toEqual 断言来验证不同的情况下代码的输出是否正确。
3. 异步测试(Asynchronous Testing)
Jest 允许测试异步代码,可以使用 async/await 或者 .then() 形式。
// asyncExample.test.js function fetchData(callback) { setTimeout(() => { callback('data'); }, 1000); } test('fetch data', (done) => { function callback(data) { expect(data).toBe('data'); done(); } fetchData(callback); }); // Using async/await test('fetch data with async/await', async () => { const data = await fetchData(); expect(data).toBe('data'); });
这个示例中展示了测试异步函数的两种方式:一种是使用 done 回调,另一种是使用 async/await。
4. 模拟(Mocking)
在测试过程中,有时需要模拟外部依赖或者函数的行为,Jest 提供了丰富的模拟功能。
// mockExample.test.js const fetchData = require('./fetchData'); jest.mock('./fetchData'); test('mocking fetchData', async () => { fetchData.mockResolvedValue('mocked data'); const data = await fetchData(); expect(data).toBe('mocked data'); });
这个示例中,我们使用 Jest 提供的 jest.mock 功能来模拟外部依赖 fetchData 的行为,以便更轻松地测试我们的代码。
通过以上示例,我们了解了 Jest 的核心概念和一些常见的测试模式。使用 Jest,我们可以编写清晰、简洁且可靠的测试,来确保代码在开发和维护过程中保持高质量和稳定性。