目標(biāo) :
介紹 jest mock
介紹 jest mock 常用函數(shù)Fn()
編寫案例
什么是 mock , 為什要使用 mock
在單元測試中 ,我們一般對代碼進(jìn)行最小單元的測試 , 并不會關(guān)心模塊/業(yè)務(wù)之間的耦合 , 所以我們會使用 mock 工具進(jìn)行數(shù)據(jù)/方法的模擬實(shí)現(xiàn) , 節(jié)約不必要的測試用例代碼
jest 種的常用 mock 函數(shù)
jest 內(nèi)置了 mock 功能足夠應(yīng)付大部分的測試場景
fn() 最簡單的 mock 函數(shù) , 如果不定義參數(shù)的話默認(rèn)返回 undefind
test("sum 1+1 =2", () => {
expect(sum(1, 1)).toBe(2);
});
test("使用fn() mock一個 undefined 數(shù)據(jù)", () => {
let mockResult = jest.fn();
expect(mockResult()).toBeUndefined();
});
test("使用fn() mock 數(shù)據(jù) 觀察是否被調(diào)用", () => {
let mockResult = jest.fn();
let useReuslt = mockResult();
expect(mockResult).toBeCalled();
});
test("使用fn() mock 數(shù)據(jù) 觀察是否被調(diào)用一次", () => {
let mockResult = jest.fn();
let useReuslt = mockResult();
expect(mockResult).toBeCalledTimes(1);
});
test("使用fn() mock一個帶參函數(shù)", () => {
let mockResult = jest.fn();
let paramsResult = mockResult(1, 2, 3);
expect(mockResult).toHaveBeenCalledWith(1, 2, 3);
});
test("使用fn() mock一個帶參函數(shù)", () => {
let mockResult = jest.fn();
let paramsResult = mockResult(1, 2, 3);
expect(mockResult).toHaveBeenCalledWith(1, 2, 3);
});
test("使用fn() 設(shè)置返回值", () => {
let mockResult = jest.fn().mockReturnValue("linqisheng");
let result = mockResult();
expect(result).toBe("linqisheng");
});
test("使用fn() 自定義函數(shù)", () => {
let mockResult = jest.fn((str) => str);
expect(mockResult("linqisheng")).toBe("linqisheng");
});
test("使用fn() 自定義異步函數(shù) promise", () => {
let mockResult = jest.fn().mockResolvedValue("linqisheng");
// 斷言mockFn調(diào)用后返回的是Promise對象
expect(Object.prototype.toString.call(mockResult())).toBe("[object Promise]");
});
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者