【问题标题】:How to import Javascript from from a Typescript unittest如何从 Typescript 单元测试中导入 Javascript
【发布时间】:2021-09-03 16:23:01
【问题描述】:

如何使用 Mocha 为主要是 Javascript 的 NPM 包运行 Typescript 测试?

我有一些 Javascript/Node.js 代码正在尝试为其编写单元测试。由于代码对通过浏览器录制的音频样本进行处理,因此我需要通过从本地 dev 文件系统加载 wav 文件来对其进行测试。

因为这在 Typescript 中更容易一些,所以我想用 Typescript 和 Mocha 编写我的单元测试。

但是,Mocha 似乎连基本的存根测试都找不到。

我的包结构如下:

src
    index.js
test
    test.ts
    mocha.opts

test.ts 的样子:

import MyPackage from '../src';

describe('Simple Math Test', () => {
 it('should return 2', () => {
        assert.equal(1 + 1, 2);
    });
});

我的 mocha.opts 看起来像:

--require ts-node/register
--recursive
--reporter spec
--ui bdd
--timeout 20000
test/**/*.ts

但是当我从项目根目录运行mocha 时,它会输出:

Error: No test files found

如果我将我的 test.ts 更改为 test.js,那么它会找到它。我该如何解决这个问题?

编辑:我发现如果我运行命令mocha -r ts-node/register test/test.ts,那么它似乎看到了Typescript测试。

但是,它仍然无法导入我的 Javascript 包:

Cannot find module '../src' or its corresponding type declarations.

import MyPackage from '../src';

【问题讨论】:

  • 我认为 test/**/*.ts 应该是 tests/**/*.ts 以匹配文件夹名称,尽管在这种情况下我希望 mocha.opts 位于项目根目录中
  • @apokryfos 这只是我的问题中的一个错字。我的代码在任何地方都使用正确的名称并匹配 mocha.opts 中的模式。

标签: javascript node.js typescript mocha.js


【解决方案1】:

mocha默认不会运行ts测试,试试添加--extension js,ts

【讨论】:

  • 谢谢。这部分有效。但是,现在 mocha 抛出了错误:import MyPackage from '../src'; SyntaxError: Unexpected identifier 即使我将其注释掉,它似乎也会阻塞所有其他特定于 Typescript 的语法,就好像它仍然将所有内容都视为 Javascript。我见过使用 Mocha 运行用 Typescript 编写的测试的项目,所以 Mocha 绝对支持 Typescript。
  • 我认为这是一个单独的转译问题,mocha 不理解 ES6 import 语法,你必须使用像 babel 这样的转译工具或安装 esm 包。相关:stackoverflow.com/a/60522428/5801142
  • 你确定吗? This package 在 mocha 和 es5 中使用该语法进行了测试。
  • 如果不查看您的 tsconfig.jsonpackage.json,很难准确判断发生了什么,我创建了一个最小的 ts-js 互操作样板:github.com/steventhan/minimal-ts-js-interop-boilerplate。您可以尝试匹配设置吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
相关资源
最近更新 更多