我几乎没有开玩笑的经验,因为我正在尝试更改函数中的变量,因为如果函数的内部变量(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

08-19 15:16