如何模拟在节点模块中导出的使用导入(ES6 打字稿)进行单元测试的外部注入库

How do I mock externally injected libraries that use import (ES6 typescript) exported in a node module for unit testing

在我的主应用程序中,我使用以下方法引入节点包 "ibm_db": import * as ibmdb from "ibm_db";

在我的单元测试中,我希望能够覆盖它,然后我: import * as ibmdb from "ibm_db";

在我的单元测试中然后:

beforeEach(() => {
   ibmdb.open = jasmine.createSpy("open");
});

我收到错误:

Cannot assign to 'open' because it is a readOnly property.

我需要知道打字稿(使用 tsc 编译成 js,然后使用 jasmine 命令测试),模拟这些函数的正确方法,这样我就可以判断是否有被调用,我不希望调用真的火了

对于 ES6 导入使用:

import * as name from "library_name"

并在单元测试中使用:

const name = require("library_name");

Requires 可以让您覆盖库中导入不会覆盖的部分