Jest es6类模拟返回未定义

时间:2020-05-04 07:13:03

标签: javascript mocking jestjs

我有一个要模拟的简单类,由于某种原因,玩笑返回的是未定义的。

这是代码:

import { MyClass as myClass } from './my-class'; 
jest.mock('./my-class', () => jest.fn());
console.log(myClass); // undefined

登录myClass时,我得到undefined

如果我在不模拟实现的情况下进行模拟,则会得到以下提示:

import { MyClass as myClass } from './my-class'; 
jest.mock('./my-class');
console.log(myClass);

上面的代码记录: function MyClass() {return mockConstructor.apply(this,arguments);}

不允许模拟,因为它不是jest.fn(),并且没有mockImplementation这样的有用方法。

正确的方法是什么?

1 个答案:

答案 0 :(得分:0)

您没有正确模拟my-class模块。您正在使用Named Exports,还需要对此进行模拟。

例如

my-class.ts

export class MyClass {}

my-class.test.ts

import { MyClass as myClass } from './my-class';
jest.mock('./my-class', () => ({ MyClass: jest.fn() }));
console.log(myClass);

输出:

  console.log
    { [Function: mockConstructor]
      _isMockFunction: true,
      getMockImplementation: [Function],
      mock: [Getter/Setter],
      mockClear: [Function],
      mockReset: [Function],
      mockRestore: [Function],
      mockReturnValueOnce: [Function],
      mockResolvedValueOnce: [Function],
      mockRejectedValueOnce: [Function],
      mockReturnValue: [Function],
      mockResolvedValue: [Function],
      mockRejectedValue: [Function],
      mockImplementationOnce: [Function],
      mockImplementation: [Function],
      mockReturnThis: [Function],
      mockName: [Function],
      getMockName: [Function] }