我在 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"
};
谢谢