【问题标题】:Properly configuring mocha.json in visual studio for sails.js app testing在 Visual Studio 中正确配置 mocha.json 以进行sails.js 应用程序测试
【发布时间】:2016-01-23 21:37:17
【问题描述】:

我正在尝试使用适当的测试和工具启动一个新项目 node.js。 我选择框架sails.js,我使用travis作为我的CI工具https://travis-ci.org/lomithrani/InteractiveResume

我使用 npm 在我的 package.json 中使用这一行启动我的测试

"test": "mocha test/bootstrap.test.js test/unit/**/*.test.js"

bootstrap.test.js:

var Sails = require('sails'),
    sails;

before(function (done) {

    // Increase the Mocha timeout so that Sails has enough time to lift.
    this.timeout(5000);

    Sails.lift({
    // configuration for testing purposes
    }, function (err, server) {
        sails = server;
        if (err) return done(err);
        // here you can load fixtures, etc.
        done(err, sails);
    });
});

after(function (done) {
    // here you can clear fixtures, etc.
    Sails.lower(done);
});

我用作样本的测试:

var request = require('supertest');

describe('ResumeController', function () {

    console.log('test');
    describe('#hi()', function () {
        it('should say hi', function (done) {
            request(sails.hooks.http.app)
                .get('/resume/hi')
                .expect(200, done);
        });
    });
});

所以如果我运行 npm test 或 travis 一切正常。但是在 Visual Studio 中运行它是行不通的。至于,据我了解,它只运行 *.test.js 而不是 bootstrap.test.js。我在sails.hooks.http.app 上遇到了一个未定义的错误,official doc from github.com/Microsoft 提供的配置方式非常少,只是我可以创建一个 mocha.json,比如这个:

{
      "ui": "tdd",
      "timeout": 300000,
      "reporter": "xunit"
}

但我看不到可以使用https://mochajs.org/#usage 的哪个元素 为了首先执行引导程序。 如果您有任何解决方法建议或任何想法,我们非常欢迎。

这是我在视觉中得到的完整堆栈跟踪

Test Name:  ResumeController #hi() should say hi
Test Outcome:   Failed
Result StandardOutput:  
1..1
not ok 1 ResumeController hi() should say hi
  ReferenceError: sails is not defined
      at Context.<anonymous> (C:\interactiveResume\test\unit\controllers\ResumeController.test.js:8:21)
      at callFnAsync (C:\interactiveResume\node_modules\mocha\lib\runnable.js:306:8)
      at Test.Runnable.run (C:\interactiveResume\node_modules\mocha\lib\runnable.js:261:7)
      at Runner.runTest (C:\interactiveResume\node_modules\mocha\lib\runner.js:421:10)
      at C:\interactiveResume\node_modules\mocha\lib\runner.js:528:12
      at next (C:\interactiveResume\node_modules\mocha\lib\runner.js:341:14)
      at C:\interactiveResume\node_modules\mocha\lib\runner.js:351:7
      at next (C:\interactiveResume\node_modules\mocha\lib\runner.js:283:14)
      at Immediate._onImmediate (C:\interactiveResume\node_modules\mocha\lib\runner.js:319:5)
# tests 1
# pass 0
# fail 1

【问题讨论】:

    标签: node.js visual-studio sails.js mocha.js


    【解决方案1】:

    您应该使用 -r 或 --require 标志。直接从命令行运行将起作用。

    但是,话虽如此,我很确定 Visual Studio mocha.json 选项文件不正确支持 require 标志。此外,他们还没有记录支持哪些标志,哪些不支持。我在 Program Files Node.js Tools for Visual Studio 文件夹中做了一些修改 mocha.js 的试验,看起来它只接受某些标志,其中函数已经在 mocha npm 包中预定义。

    无论哪种方式,即使您确实修改了此文件并使其工作,下次升级您的 Visual Studio node.js 工具时,您的更改可能会被吹走。目前还没有很好的支持或文档。我希望我没有一个开发团队要求所有测试在 Visual Studio 中以某种方式工作,否则我只会使用 Visual Studio 代码。

    我猜他们会在 mocha.js 文件上接受拉取请求,但如果你能让它工作的话。我只是没有时间去研究太多。

    【讨论】:

      猜你喜欢
      • 2010-09-11
      • 2018-09-21
      • 1970-01-01
      • 2012-05-12
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多