【问题标题】:How to add arguments to karma-mocha?如何向 karma-mocha 添加参数?
【发布时间】:2015-08-27 19:59:59
【问题描述】:

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

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

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

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

如何使用 karma.conf.js 文件将参数 compilers ts:typescript-require 包含在 mocha 中:

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

一个例子将不胜感激!

【问题讨论】:

    标签: unit-testing typescript karma-mocha


    【解决方案1】:

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

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

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

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

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-09
      • 2013-07-26
      • 2020-07-09
      • 2014-08-07
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多