如何使用 ts-node 运行 测试文件?

How do I run a test file using ts-node?

作为 node 和 ts-node 的新手,我正在努力弄清楚如何 运行 测试这个开源项目 -- https://github.com/pocesar/node-stratum(它们是 .ts 文件)。我安装了 "typescript" 和 "ts-node" ...

localhost:node-stratum satishp$ npm install -g typescript
/usr/local/bin/tsc -> /usr/local/lib/node_modules/typescript/bin/tsc
/usr/local/bin/tsserver -> /usr/local/lib/node_modules/typescript/bin/tsserver
+ typescript@2.7.2
added 1 package in 2.974s


localhost:node-stratum satishp$ npm install -g ts-node
/usr/local/bin/ts-node -> /usr/local/lib/node_modules/ts-node/dist/bin.js
+ ts-node@5.0.1
added 17 packages in 1.596s

但是当我转到位于 "test/tests.ts" 目录中的 运行 测试时,我得到以下错误

localhost:node-stratum satishp$ ts-node test/tests.ts
Error: Cannot find module '../lib'
    at Function.Module._resolveFilename (module.js:555:15)
    at Function.Module._load (module.js:482:25)
    at Module.require (module.js:604:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Users/satishp/Documents/workspace/node-stratum/test/tests.ts:3:1)
    at Module._compile (module.js:660:30)
    at Module.m._compile (/usr/local/lib/node_modules/ts-node/src/index.ts:400:23)
    at Module._extensions..js (module.js:671:10)
    at Object.require.extensions.(anonymous function) [as .ts] (/usr/local/lib/node_modules/ts-node/src/index.ts:403:12)
    at Module.load (module.js:573:32)

我还需要做些什么才能将测试文件正确地 运行 吗?

经过一些研究,您应该这样做:

  • 克隆存储库(我假设你已经这样做了,只是为了完整起见)
  • 运行 npm install 在克隆的文件夹中。这样您将拥有项目的所有特定包版本。
  • 运行 tsc将源文件编译到lib文件夹中。忽略类型错误;代码应该仍然可以编译。
  • 运行 tsc -p tests.json 编译测试文件,它使用 tests.json 文件作为 tsconfig.同样,忽略类型错误。
  • 运行 mocha test 实际 运行 编译文件的测试。

为了加快工作流程,运行 tsc -wtsc -p tests.json -w 在单独的命令行实例中,以便自动编译文件。

然后在第三个实例中,您可以运行 mocha test -w 到运行 编译测试。但是,运行测试中的错误之一会导致 mocha 失败,因此您必须先修复该错误,然后才能 运行 在手表模式下使用 mocha。

该项目没有花时间修复许多类型错误,也没有提供任何关于 运行 测试的适当文档,这无济于事,所以我建议在GitHub 以便作者注意。