Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript sails.js摩卡浮雕_Javascript_Node.js_Sails.js_Mocha.js - Fatal编程技术网

Javascript sails.js摩卡浮雕

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:

我有一些mocha测试,需要使用不同的配置重新提升帆,该配置使用moduleLoaderOverride模拟某些策略。总的来说,这是可行的,但似乎帆并没有适当地降下和重新升起

对测试的sails实例执行所有管理的实用程序文件:

// 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
中,结果就消失了!