Visual Studio 2017使用Mocha

5

我在Visual Studio 2017中有一个Node.js项目,并尝试使用Mocha进行单元测试。但不知何故,如果需要任何不在node_modules中的文件,测试资源管理器(Test Explorer)就找不到单元测试。

我有一个简单的测试索引index.spec.js,测试资源管理器(Test Explorer)能够找到这些单元测试:

var assert = require('assert');

describe('Index  Suite 1', function () {
    it('Test 1', function () {
        assert.ok(true, "This shouldn't fail");
    });

    it('Test 2', function () {
        assert.ok(1 === 1, "This shouldn't fail");
        assert.ok(false, "This should fail");
    });
});

我有一个完全相同的测试文件heroes.spec.js,只添加了“var heroes = require('./heroes');”,但它无法找到单元测试。我认为它找不到heroes。文件heroes.js与heroes.spec.js在同一个文件夹中。我也尝试了./heroes.js。在两个文件中,TestFramework都设置为Mocha。

以下是heroes.spec.js文件内容:

var assert = require('assert');

var heroes = require('./heroes');

describe('Heroes Test', function () {
    it('Test 1', function () {
        assert.ok(true, "This shouldn't fail");
    });

    it('Test 4', function () {
        assert.ok(1 === 1, "This shouldn't fail");
        assert.ok(false, "This should fail");
    });
});

我缩小了问题的范围。heroes.js引用其他模块,其中一个模块引用db.js,db.js使用config来设置dbConfig。如果我替换代码并硬编码值,单元测试就会被找到。我有一个解决方法,但我想正确地解决它。我尝试在项目属性中设置环境变量NODE_ENV=test,并创建一个test.config文件。问题仍然存在。有任何正确解决这个问题的想法吗?
以下是我的解决方法:
//var dbConfig = config.get('dbConfig');
var dbConfig = {
    "user": "test",
    "password": "password",
    "server": "xxxx",
    "database": "Sandbox"
};

谢谢


如果找不到 ./heroes,则会抛出错误并停止执行。但这似乎不是您的情况。我相信 Mocha 找不到您的 heroes.spec.js 文件,因为它可能在测试目录的子目录中。 - kingdynastyk
1个回答

0

我在使用 Visual Studio 2017 时未能找到解决方案,因此我下载/安装了 Visual Studio Code。 使用 Visual Studio Code,我能够调试单元测试并找到问题所在。


不确定你在问什么。我无法在Visual Studio 2017中使其工作。但是我能够使用Visual Studio Code使其工作。这是Visual Studio的免费版本。 - Roger
我指的是 'Visual Studio Code'。它在 'Visual Studio 2017' 中可以正常工作,但我无法使它在 'VSCode' 中运行。 - Serg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接