Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 使用rewire和mocha SyntaxError进行nodejs测试:意外令牌_Javascript_Node.js_Unit Testing_Mocha.js - Fatal编程技术网

Javascript 使用rewire和mocha SyntaxError进行nodejs测试:意外令牌

Javascript 使用rewire和mocha SyntaxError进行nodejs测试:意外令牌,javascript,node.js,unit-testing,mocha.js,Javascript,Node.js,Unit Testing,Mocha.js,我正在尝试测试从nodejs上的文件导出的函数。我也用q来处理承诺。函数返回一个承诺,该承诺在内部回调时被解析/拒绝。在这个回调中,它从另一个地方调用另一个函数,返回另一个承诺。当第二个承诺完成时,我决定或拒绝返回的承诺。 在测试中,我想模拟第二个函数,因此我使用它传递一个存根,它返回一个承诺,我在测试中手动解析该承诺。 问题是,当我尝试模拟这个函数时,我会得到输出:syntax恐怖:意外的令牌。 我在Windows7上 重新布线模块有什么我遗漏的吗 错误: 1) Calls the

我正在尝试测试从nodejs上的文件导出的函数。我也用q来处理承诺。函数返回一个承诺,该承诺在内部回调时被解析/拒绝。在这个回调中,它从另一个地方调用另一个函数,返回另一个承诺。当第二个承诺完成时,我决定或拒绝返回的承诺。 在测试中,我想模拟第二个函数,因此我使用它传递一个存根,它返回一个承诺,我在测试中手动解析该承诺。 问题是,当我尝试模拟这个函数时,我会得到输出:
syntax恐怖:意外的令牌。

我在Windows7上

重新布线模块有什么我遗漏的吗

错误:

      1) Calls the createConfFiles just once


  1 passing (113ms)
  1 failing

  1) Setup scripts management configuration on current dir base on user inputs d
sdsdsd Calls the createConfFiles just once:
     SyntaxError: Unexpected token .
      at Function.__set__ (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\mai
n\webapp\dirigent\bin\init\scripts.js:102:19)
      at Context.<anonymous> (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\
main\webapp\dirigent\bin\init\scriptst.test.js:47:21)
      at callFnAsync (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\main\web
app\dirigent\node_modules\mocha\lib\runnable.js:306:8)
      at Test.Runnable.run (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\ma
in\webapp\dirigent\node_modules\mocha\lib\runnable.js:261:7)
      at Runner.runTest (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\main\
webapp\dirigent\node_modules\mocha\lib\runner.js:421:10)
      at D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\main\webapp\dirigent\
node_modules\mocha\lib\runner.js:528:12
      at next (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\main\webapp\dir
igent\node_modules\mocha\lib\runner.js:341:14)
      at D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\main\webapp\dirigent\
node_modules\mocha\lib\runner.js:351:7
      at next (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\src\main\webapp\dir
igent\node_modules\mocha\lib\runner.js:283:14)
      at Immediate._onImmediate (D:\p4\rcalvo_DEV-OB\Enterprise\static-content\s
rc\main\webapp\dirigent\node_modules\mocha\lib\runner.js:319:5)



npm ERR! Test failed.  See above for more details.
测试功能:

function init() {
    process.stdout.write('\nScripts\n');
    inquirer.prompt(question, function (answer) {
        if (answer.scripts === choices[0]) {
           Q.when(createScriptsConfFile(ioOptions))
                .then(function (result) {
                    defer.resolve(choices[0]);
               }, function (error) {
                   defer.reject(error);
               }).done();
        } else {
            defer.reject(answer.scripts);
        }
    });

    return defer.promise;

};
// exported as recomended here https://github.com/jhnns/rewire/issues/22
module.exports = init;

在查看了rewire的代码之后,我发现他们构建了一个字符串,其中包含模块名称和用于重新创建赋值的值。然后使用计算字符串。如果要模拟文件的导出值,这将不起作用,因为变量名将无效,因为它以点开头。因此出现了奇怪的错误“SyntaxtError:意外标记”。我换了电线,一切正常

var defer;
before(function () {
    defer = Q.defer();
    mockery.enable({
        warnOnReplace: false,
        warnOnUnregistered: false,
        useCleanCache: true
    });
    mockery.registerMock('inquirer', inquirers.buildScripts);

    createConfigFiles = sinon.stub().returns(defer.promise);
    mockery.registerMock('./createConfigFiles.js', createConfigFiles);

});

it('Calls the createConfFiles just once', function (done) {
    var scripts = require('./scripts.js');
    scripts().then(function (result) {
        expect(result).to.equal("Yes");
        expect(createConfigFiles.calledOnce).to.be.true;
        done();
    }).done();

    defer.resolve(true);
});


after(function () {
    mockery.disable();
});

哪一行是
D:\p4\rcalvo\u DEV-OB\Enterprise\static content\src\main\webapp\dirigent\bin\init\scripts.js:102:19
?DSD来自哪里?DSD来自调试时我留下的控制台日志。我已经upset@Daniel一个白色的,这是从输出。它说是第100行,因为wire似乎在内存中编辑文件,以便我可以模拟依赖项,但我不确定这是我第一次使用这个模块
var defer;
before(function () {
    defer = Q.defer();
    mockery.enable({
        warnOnReplace: false,
        warnOnUnregistered: false,
        useCleanCache: true
    });
    mockery.registerMock('inquirer', inquirers.buildScripts);

    createConfigFiles = sinon.stub().returns(defer.promise);
    mockery.registerMock('./createConfigFiles.js', createConfigFiles);

});

it('Calls the createConfFiles just once', function (done) {
    var scripts = require('./scripts.js');
    scripts().then(function (result) {
        expect(result).to.equal("Yes");
        expect(createConfigFiles.calledOnce).to.be.true;
        done();
    }).done();

    defer.resolve(true);
});


after(function () {
    mockery.disable();
});