在用angular + jest运行单元测试时,如何正确模拟库“ Twemoji”?

时间:2019-11-14 14:23:59

标签: angular jestjs twemoji

我的目标是开玩笑地在Angular应用程序中运行单元测试,而不会得到:

error TS2304: Cannot find name 'twemoji'

Twemoji已添加到项目package.jsonangular.json文件的脚本部分。在运行和构建应用程序时,它可以完美运行,但在运行单元测试时,会失败并显示上述错误。

我尝试过的事情

我尝试将以下内容添加到我的src/jestGlobalMocks.ts文件中:

declare var twemoji: {
    parse(str: string, options?: { folder: string; ext: string }): string;
};
Object.defineProperty(window, 'twemoji', {
    value: {
        parse: str => str,
    },
});

src/typings.d.ts

declare var twemoji: {
    parse(str: string, options?: { folder: string; ext: string }): string;
};

但这似乎并不能解决问题,因为我仍然收到错误TS2304。我似乎出现了一些不一致的行为,因为有时它看起来可行吗?期待解决方案/说明:)

1 个答案:

答案 0 :(得分:2)

想法:

  1. 尝试安装types for twemoji
  2. 基本上src/typings.d.ts应该有效。它是否包含在编译过程中?它是否在您的测试tsconfig filesinclude部分中列出?您可以运行tsc --project=tsconfig.spec.json --outDir=output --listFiles
  3. 检查它
  4. 尝试将typings.d.ts中的代码更改为此:
    declare module 'twemoji' {
      export function parse(str: string, options?: { folder: string; ext: string }): string;
    }