首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟默认导出失败,但命名导出失败

模拟默认导出失败,但命名导出失败
EN

Stack Overflow用户
提问于 2020-09-22 12:51:38
回答 1查看 62关注 0票数 0

我有一个假设file.js的代码是这样的

代码语言:javascript
复制
const myFunc = () => {
    return {
        func1: () => {},
        func2: () => {}
    }
}

export const myObject = {
 key: ''
};

export default myFunc();

我正试图在我的测试中使用jest模拟这个导出。假设file.test.js是测试文件。

代码语言:javascript
复制
jest.mock('./path/file', () => {
    return {
         default: {
              func1: jest.fn(),
              func2: jest.fn()
         },
         myObject: {}
    };
});

但是当我的测试运行时,它抛出错误,说_File.default.func1 is not a function

如何正确地模拟同时具有默认导出和命名导出的js文件?

EN

回答 1

Stack Overflow用户

发布于 2020-09-29 15:05:57

解决方案:

index.ts

代码语言:javascript
复制
const myFunc = () => {
  return {
    func1: () => {},
    func2: () => {},
  };
};

export const myObject = {
  key: '',
};

export default myFunc();

index.test.ts

代码语言:javascript
复制
import fns, { myObject } from './';

jest.mock('./', () => {
  return {
    myObject: { key: 'teresa teng' },
    func1: jest.fn(),
    func2: jest.fn(),
  };
});

describe('64003254', () => {
  it('should pass', () => {
    expect(jest.isMockFunction(fns.func1)).toBeTruthy();
    expect(jest.isMockFunction(fns.func2)).toBeTruthy();
    expect(myObject.key).toBe('teresa teng');
  });
});

单元测试结果:

代码语言:javascript
复制
 PASS  src/stackoverflow/64003254/index.test.ts (11.809s)
  64003254
    ✓ should pass (6ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        13.572s
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64003254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档