【问题标题】:Typescript with Jest. Mock just one named export from module带有 Jest 的打字稿。仅从模块中模拟一个命名导出
【发布时间】:2021-06-11 00:28:58
【问题描述】:

我在尝试仅从模块中模拟一个命名导出时遇到了一些麻烦。假设我们有以下命名的 export getA、getB 和 getC。我只想模拟一个名为 getA 的导出的特定场景。

export const getA = () => "a"
export const getB = () => "b"
export const getC = () => "c"

现在我正在测试...

import {getA, getB, getC} from '../test.ts'

....

对于我的一种情况,我需要让 getA 返回其他内容,但命名导出的其余部分不应更改。

【问题讨论】:

    标签: typescript jestjs


    【解决方案1】:

    如果你只想mock getA,你可以使用jest mock factory将getA覆盖为mocked function,另一个命名exports保持原有逻辑。

    import { getA, getB, getC } from '../test';
    
    jest.mock('./index', () => {
      const origin = jest.requireActual('../test');
      return {
        ...origin,
        getA: jest.fn(),
      }
    })
    
    describe("getA", () => {
      test('should return new value', () => {
        (getA as jest.Mock).mockReturnValue('AAA');
        expect(getA()).toEqual('AAA');
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-15
      • 2020-04-13
      • 2022-01-10
      • 2019-09-24
      • 2019-10-19
      • 1970-01-01
      • 2022-07-09
      • 2017-09-23
      相关资源
      最近更新 更多