【问题标题】:Running mocha tests from node从节点运行 mocha 测试
【发布时间】:2016-03-10 08:29:17
【问题描述】:

我正在尝试从 node 运行我的 mocha 测试。最终目标是通过 istanbul/blanket 添加代码覆盖率,并生成一个 lcov 文件以输入到声纳以进行代码覆盖率。

这是我正在尝试的示例项目 https://github.com/rajarshigoswami/Todos

摩卡测试正在进行中 https://github.com/rajarshigoswami/Todos/tree/master/test/mocha

测试是从浏览器运行的,但是当我通过节点尝试时,它不会获取任何规范文件。

如何使用: 运行:npm 安装 然后:咕噜声

我的问题是:

  1. 我在这里遗漏了什么或做错了什么?
  2. 如何集成毯子.js/istanbul 以生成 lcov 文件

【问题讨论】:

    标签: javascript gruntjs requirejs mocha.js istanbul


    【解决方案1】:

    我会改变一些事情。只需将此添加到package.json

    "scripts": {
      "test":
      "./node_modules/.bin/istanbul test ./node_modules/.bin/_mocha -- -R spec"
    }
    

    现在,当您执行 npm test 时,它会运行 mocha 和 istambul

    这个article 会帮助你

    【讨论】:

    • 是的,使用 npm 也是一个不错的选择。仍然只是直接使用 mocha,没有任何测试或任务运行器。
    • 事实是,自从我发现了 npm 脚本的强大功能,就将它用于一切
    • 如果我不使用 requirejs,这将起作用。我所有的外部依赖项都是通过 require 加载的,所以测试失败
    【解决方案2】:

    有几个选项取决于您需要做什么:

    1) 因此,首先最好了解在节点中运行测试的实际含义?例如,我使用mocha 来测试我的node.js 应用程序的服务器端代码。它只是在不依赖任何特定环境的情况下运行测试(显然node.js 除外)。无需任何其他工具,只需运行mocha your/custom/test/directory/(假设您的mocha 已全局安装)。 因此,只要您的视图测试不依赖于在 Web 浏览器中运行就可以了。

    2) 如果您只想运行前端测试而不需要在网络浏览器中手动打开 SpecRunner.html,我强烈建议您使用 karma 测试运行器,以及像 PhantomJS 这样的无头浏览器。

    3) 最后,如果您已经安装了grunt,只需获取mocha-istanbul npm 模块。配置真的很简单:

    mocha_istanbul: {
        coverage: {
            // where your tests leave
            src: 'server/tests',
            options: {
                // instrument only spec files
                mask: '*.spec.js',
                // output a human readable website
                // (along site regular test summary produced by mocha)
                reportFormats: ['html']
            }
        }
    }
    

    如您所见,这里有一些选项。只需选择最适合您项目的那个即可。

    【讨论】:

    • 如果在每个文件中都声明了依赖关系,这很有效,这很痛苦。我有一个 main.js,其中加载了所有需要的依赖项。在从浏览器进行测试时,我首先加载它,然后调用每个规范,其中相同的依赖项仅用作定义
    • 这就是我使用 Karma 加载所有依赖项的原因 :) 它工作得非常好。
    • 您有任何示例回购的机会。这里给出的那个不起作用github.com/kjbekkelund/karma-requirejs
    【解决方案3】:

    您的问题是您正在尝试使用 requirejs 测试代码

    为了让你的 mocha 规范在 grunt 任务运行器上使用 phantomrequirejs,你可以使用 grunt-mocha-phantomjs

    对于您使用istambol 的其他问题检查this link(此链接更适合您的目的,因为它也使用主干(-:)

    【讨论】:

    • 我也试过了。问题是如果我在我的测试中放置一个 console.log,它就会运行。这意味着测试正在运行,但 mocha 不知道。另外,如果我通过 phantom.js 运行,mocha 会抱怨 run() 没有被调用,但理想情况下你不需要它来通过节点运行
    • 你试过thiswindow.mochaPhantomJS吗?
    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2019-07-27
    • 1970-01-01
    • 2020-08-26
    • 2022-07-23
    • 2017-11-29
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多