我几乎没有开玩笑的经验,因为我正在尝试更改函数中的变量,因为如果函数的内部变量(baseUrl)更改为null,我们希望抛出错误:buildUrl.js
:
export function buildUrl(contentId, data, options = {}) {
let baseUrl = config.has('imgBaseUrl') && config.get('imgBaseUrl');
if (!baseUrl) {
throw new Error('some error');
}
}
我需要将baseUrl模拟为null的值并对其进行测试
buildUrl.test.js
import {buildUrl} from "./buildURL";
....
it('throw an error when "baseUrl" is not configured', () => {
let mockBaseUrl = {baseUrl: null};
jest.mock('./buildURL', ()=> mockBaseUrl);
// jest.mock('../../../config/test', ()=>mockImgBaseUrl); // or mock the config to be used by the function?
expect(()=> buildUrl('1.44444', data[0], defaultOptions)).toThrow(
'some error'
);
});
使用
jest.fn()
的另一种方法没有按预期工作,也许我在这里遗漏了一些东西... 最佳答案
我认为您可以这样做:
jest.mock('./buildURL', () => {buildUrl: jest.fn()})
buildUrl.mockImplementation(() => {baseUrl: null})
见Jest docs