各种单测比较
yarn install jest -g
jest --inti // 初始化的时候选择模块 选择 jsdom, 不要选 Node
当单测的时候 moudle 找不到情况可以设置 jest.config.js 文件,
moduleNameMapper: {
// 'absolute-path': 'relative-path'
'src/(.*)': '<rootDir>/src/$1',
},
Jest 响应式异步测试 a.test.ts, 回调方式测试需手动执行 done 函数才开始测试
//运行
jest a.test.ts
模糊匹配
test('浮点数相加', () => { var value = 0.1 + 0.2; expect(value).toBeCloseTo(0.3); // 通过});
异步调用测试
jest.setTimeout(30000);
//嵌套结构 可多层嵌套
describe("异步调用测试", ()=> {
test("callback", (done) => {
function callback(error, data){
if(error){
done(error);
return;
}
try{
expect(data).toBe({price:21});
// done 的回调执行后才会开始测试
done();
}catch(error){
done(error);
}
}
fetchData(callback)
});
test("then", ()=>{
return fetchData().then((data)=>{
expect(data).toBe({price:21})
})
})
test("await", async()=>{
var data = await fetchData();
expect(data).toBe({price:21})
})
test("mock", ()=>{
const myMock = jest.fn();
console.log(myMock());
myMock.mockReturnValueOnce(10).mockReturnValueOnce("x").mockReturnValueOnce(true);
console.log(myMock(), myMock())
expect(myMock()).toBe(true)
})
test("mock random", ()=>{
const myMock = jest.fn();
// console.log(myMock());
myMock.mockReturnValueOnce(true).mockReturnValueOnce(true);
const result = [11, 12].filter((num) => myMock(num))
console.log(result);
console.log(myMock.mock.calls[0][0])
// console.log(myMock.mock.calls[1][0])
// console.log(myMock(), myMock())
expect(myMock.mock.calls[1][0]).toBe(12)
})
// test
})
const fetchData = async (callback?:any) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve({price:21});
callback?.(null, {price:21})
}, 400);
});
}