Jasmine 是一个广泛使用的 JavaScript 测试框架,特别适合于前端单元测试。它允许开发者编写可读性强的测试用例,并且可以轻松地集成到各种构建工具中,如 Karma。
Jasmine 提供了一套丰富的断言库和一套匹配器(Matchers),用于检查代码的行为是否符合预期。它还支持间谍(Spies)功能,用于监视函数调用和行为。
done
回调或返回 Promise 来处理异步操作。Jasmine 主要用于单元测试,但也适用于集成测试和端到端测试。
假设我们有一个简单的模块 dataService.js
,它负责设置和获取数据:
// dataService.js
let data = null;
export function setData(newData) {
data = newData;
}
export function getData() {
return data;
}
我们可以使用 Jasmine 来测试 setData
和 getData
函数是否按预期工作:
// dataService.spec.js
import { setData, getData } from './dataService';
describe('DataService', () => {
it('should set and get data correctly', () => {
const testData = 'test data';
setData(testData);
expect(getData()).toEqual(testData);
});
it('should return null when no data is set', () => {
setData(null);
expect(getData()).toBeNull();
});
});
问题:测试运行时,getData
返回的值与预期不符。
原因:
setData
函数可能没有正确设置数据。解决方法:
setData
函数逻辑正确。beforeEach
钩子来重置数据状态,确保每个测试用例都在干净的环境中运行。describe('DataService', () => {
beforeEach(() => {
setData(null); // 重置数据状态
});
it('should set and get data correctly', () => {
const testData = 'test data';
setData(testData);
expect(getData()).toEqual(testData);
});
it('should return null when no data is set', () => {
expect(getData()).toBeNull();
});
});
通过这种方式,可以确保每个测试用例都在预期的初始状态下运行,从而避免状态污染的问题。
领取专属 10元无门槛券
手把手带您无忧上云