我有config/index.js
哪个根据设置的NODE_ENV环境变量返回不同的配置文件。
我正在尝试编写一个简单的测试以确保为每个环境返回正确的配置,但是我遇到了一个问题,其中实际上仅调用了第一个需求,而同一文件的后续需求正在使用来自首先要求。
我应该如何更改测试以解决此问题?
describe('config', function () {
it('should return dev config', function (done) {
process.env.NODE_ENV = 'development';
var config = require(__dirname + '/../../config'); // development config
console.log(config.plugins.ipFilter);
done();
});
it('should return prod config', function (done) {
process.env.NODE_ENV = 'production';
// development config from above.
// the require here doesn't actually get invoked
var config = require(__dirname + '/../../config');
console.log(config.plugins.ipFilter);
done();
});
});
config/index.js
这是我正在尝试测试的简化版本(工作正常):
var Hoek = require('hoek');
var settings = {
'defaults': require('./settings/defaults'),
'production': require('./settings/production')
};
var env;
switch (process.env.NODE_ENV) {
case 'production': env = 'production'; break;
case 'development': env = 'development'; break;
default: env = 'defaults'; break;
}
var config = Hoek.applyToDefaults(settings['defaults'], settings[env]);
module.exports = config;
在运行第二项测试之前,我将从Node的模块缓存中删除该模块:
var resolved = require.resolve(__dirname + '/../../config');
delete require.cache[resolved];
因此,当再次需要它时,Node将从头开始加载。请注意,上面的代码只会config
从缓存中删除模块。如果您需要删除由加载的模块require
调用
里面 的config
模块,那么你就必须做到上面一样为他们每个人也。
顺便说一句,如果您的测试将变得异步,则您需要done
像当前一样的回调。如果您的测试要保持现在的同步,则可以done
从提供的回调的参数列表中删除it
并省略调用它。
问题内容: 我有一个基于Express.js构建的应用程序,我想测试文件上传功能。我正在尝试重现解析为req.files的对象(使用express.bodyParser中间件时)。我怎样才能做到这一点? 问题答案: 您可以直接在Mocha中执行此操作,但这有点棘手。这是发布图像的示例: Content-Disposition 的 name 参数是通过req.files(以req.files.ima
mocha是一个功能丰富的 javascript 测试框架,运行在 node.js 和浏览器中,使异步测试变得简单有趣。Mocha测试连续运行,允许灵活和准确的报告,同时将未捕获的异常映射到正确的测试用例。在 Github 上托管。
要运行Mocha的测试,您需要GNU Make或兼容; Cygwin应该工作。 $ cd /path/to/mocha $ npm install $ npm test 要使用其他记者: $ REPORTER=nyan npm test
问题内容: 我有两个包含摩卡测试案例的javascript文件。 我将它们放在一个文件夹中,当我执行命令时,第一个文件(abc.js)总是在xyz.js之前执行。我认为这可能是由于字母顺序造成的,并将文件重命名为 但是仍然首先执行xyz.js(以前是abc.js)的内容。如何更改这些测试文件的执行顺序? 问题答案: Mocha有一个(short )选项可以对测试文件进行排序:
我在测试用例中提交了一个网络请求,但这有时需要超过2秒(默认超时)。 如何增加单个测试用例的超时?
问题内容: 有没有一种方法可以快速测试这些中间件: 我发现的唯一中间件测试是: 这与上面提供的简单中间件(类似于使用回调测试基本功能)很好地配合使用,但是对于更复杂的中间件,我无法使其正常工作。可以测试这种中间件吗? 问题答案: 这里有一个简单的设置,你可以使用,使用和: 从那里,您可以为模式匹配等添加更多详细的测试。由于仅使用,因此不必模拟整个对象(由Express创建),而只需使用带有属性的简