2

我已经为 TypeScript 项目设置了单元测试。从命令行可以正常工作:

mocha --compilers ts:typescript-require ./source/**/*.spec.ts

现在,我已将 mocha 和 chai 添加到我的 karma 文件中,如下所示:

...
frameworks: ['mocha', 'chai'],
...

如何使用此部分的文件将参数包含在compilers ts:typescript-requiremocha 中:karma.conf.js

...
client: {
  mocha: {
    // I assume it goes here?
  }
},
...

一个例子将不胜感激!

4

1 回答 1

0

所以...我有一些好消息和一些坏消息。首先是坏消息。

typescript-require作为 Mocha 插件工作,因为在命令行中,Mocha 和 Typescript 都在 Node.js 的上下文中运行。但是,当您使用 Karma 时,Mocha 实际上是在浏览器的上下文中运行的。浏览器没有内置的模块加载器(的实现require(...)),通常有两种策略可以解决这个问题:

  1. 使用开发时转换器(例如 Browserify 或 Webpack)来分析您的require(...)调用并将其替换为它们的加载代码。
  2. 添加支持 require 的浏览器内加载程序(例如 SystemJS 或 RequireJS)。

有不同风格的 loader/require(...) 行为。但是,由于您的代码在命令行 (Node.js) 中工作,我猜您想要一个可以模拟 Node.js 的加载器,它是系列 #1。

好的,现在是好消息。似乎您想运行测试,而不必执行单独的步骤将 Typescript 转换为 JS,因为您使用的插件“即时”执行此操作。你可以在 Karma 中做类似的事情,你只需要在 Karma 层而不是 Mocha 层中运行它。执行此操作的 Karma 插件是https://www.npmjs.com/package/karma-typescript-preprocessor

祝你好运!

于 2016-05-14T00:57:29.087 回答