Javascript sails.js摩卡浮雕
我有一些mocha测试,需要使用不同的配置重新提升帆,该配置使用moduleLoaderOverride模拟某些策略。总的来说,这是可行的,但似乎帆并没有适当地降下和重新升起 对测试的sails实例执行所有管理的实用程序文件:Javascript sails.js摩卡浮雕,javascript,node.js,sails.js,mocha.js,Javascript,Node.js,Sails.js,Mocha.js,我有一些mocha测试,需要使用不同的配置重新提升帆,该配置使用moduleLoaderOverride模拟某些策略。总的来说,这是可行的,但似乎帆并没有适当地降下和重新升起 对测试的sails实例执行所有管理的实用程序文件: // util var Sails = require('sails/lib/app'), sails; module.exports = { sailsInstance: undefined, testConfigs: {}, start:
// util
var Sails = require('sails/lib/app'),
sails;
module.exports = {
sailsInstance: undefined,
testConfigs: {},
start: function(callback) {
this.sailsInstance = new Sails();
/*
This config will NOT be enforced for the remaining tests,
it is just a quick lift so our code can use sails config
parser and extract the other configs easily.
*/
this.sailsInstance.lift({}, function(err, server) {
sails = server;
// populate this.testConfigs object here
this.configureSails('defaultConfig', callback);
}.bind(this));
},
end: function(callback) {
this.sailsInstance.lower(callback);
},
configureSails: function(configName, callback) {
console.log('LIFTING WITH:', configName);
var launchConfig = this.testConfigs[configName];
console.log('LOWERING');
this.sailsInstance.lower(function (err) {
console.log('LOWERED');
this.sailsInstance = new Sails();
console.log('LIFTING');
this.sailsInstance.lift( launchConfig, function(err, server) {
console.log('LIFTED');
global.sails = server;
return callback(err);
}.bind(this));
}.bind(this));
},
在测试引导文件中:
// test-bootstrap
before(function (done){
util.start(done);
});
after(function(done) {
testUtils.end(done);
});
在用户测试文件中:
// user test
describe('User permissions', function() {
before(function(done){
util.configureSails('enablePolicies', done);
});
});
因此,在引导过程中一切都进行得很顺利,但在用户测试文件中第二次提升时失败。我得到的确切记录如下:
LIFTING WITH: defaultConfig
LOWERING
LOWERED
LIFTING
LIFTED
User permissions
LIFTING WITH: enablePolicies
LOWERING
1) "before all" hook
0 passing (3s)
1 failing
1) User permissions "before all" hook:
Uncaught Error: Trying to start server on port 1337 but can't...Something else is probably running on that port!
Please disable the other server, or choose a different port and try again.
LOWERED
LIFTING
// npm error spam
当帆连续两次尝试提升时,我看到了这个错误,但这不应该发生,因为我先降低它。我还怀疑存在范围问题,因为start函数在没有运行端口的情况下执行两次提升,但用户测试失败。我看到的唯一区别是configureSails函数是从用户测试文件而不是util文件调用的,但我不确定这是否是问题所在,或者如果是问题所在,如何解决
有什么想法吗?提前感谢为什么不在用户测试时尝试不同的端口?非常有趣的结果。。。在配置中使用
端口:1338
时,对于无法在端口1337上提升,我得到了相同的错误。做了一些进一步的挖掘,发现如果我不返回回调,错误不会出现-它将成功解除。但是很明显,这会挂起整个测试套件,其他什么都没有做。好的,我已经移除了所有的升降机,并确认sails.lower导致了错误。在这一点上,这似乎更像是一个错误。这是有道理的,因为一般来说,我们从不等到帆真正降下。也许你可以使用不同的方法,而不必等到帆真正降下。我在尝试运行npm测试时遇到了同样的问题。我在lib/hook/https/start.js
中深入研究了sails的源代码。我真的不知道为什么在异步流中,服务器侦听成功,没有错误,并且有address()
result,但是在verify
中,结果就消失了!