如何使用 Jest 模拟外部包中的单个文件?

问题描述 投票:0回答:1

我正在使用 Typescript 开发一个产品,它通过 npm 使用一些外部包(如果重要的话,用 JS 编写)。在测试中,我只想模拟该包中的一个 JS 文件。

我怎样才能用 Jest 做到这一点?

package.js:

  "dependencies": {
    ...
    "@company/product": "1.8.0"
    ...

someFile.ts:

import * as sdk from "@company/product";

我尝试如下嘲笑它:

someFile.spec.ts:

...

const prefs: IPrefs = {
  some_property: -1
};

jest.mock(
  "@company/product/sdk/api/prefs.js",
  (): { Prefs: IPrefs } => {
    return {
      Prefs: prefs
    };
  }
);

外部包中的原始“prefs.js”文件如下所示:


import ... // i can see in the failed test stack trace

export let Prefs = {
  ...
};

但这显然不是嘲笑,因为我可以看到外部包中原始“prefs.js”的堆栈跟踪。

javascript typescript jestjs mocking
1个回答
0
投票
  • __mocks__
     旁边创建一个 
    node_modules

    目录
  • __mocks__
    内,复制您正在模拟的包的目录结构。

__mocks__/company/product/sdk/api/prefs.js
内,定义函数的模拟实现:

export const someFunction = jest.fn(() => {
  // return;
});

在这里,

jest.fn()
创建了一个模拟函数,您可以在测试中控制它。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.