5

我在 Visual Studio 2017 中有一个 nodejs 项目,我正在尝试使用 mocha 进行单元测试。由于某种原因,如果测试资源管理器需要任何不在 node_modules 中的文件,则无法找到单元测试。

我有一个简单的测试 index.spec.js 并且测试资源管理器能够找到单元测试:

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");
    });
});

我有一个相同的测试 heros.spec.js 并添加了“var heros = require('./heroes');” 它没有找到单元测试。我认为它找不到英雄。文件 heros.js 与 heros.spec.js 位于同一文件夹中。我还用 ./heroes.js 进行了尝试。在这两个文件中,TestFramework 都设置为 Mocha

这是文件 heros.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");
    });
});

我缩小了问题的范围。hero.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"
};

谢谢

4

1 回答 1

0

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

于 2017-11-29T18:04:05.737 回答