Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 在摩卡咖啡上循环()_Javascript_Mocha.js_Chai - Fatal编程技术网

Javascript 在摩卡咖啡上循环()

Javascript 在摩卡咖啡上循环(),javascript,mocha.js,chai,Javascript,Mocha.js,Chai,我想用mocha迭代几组测试文件,但我的it()从未执行过 var unitTests = JSON.parse(fs.readFileSync('./test/unitTests.json', 'utf8')); for (test in unitTests.unitTests) { var inputFilename = unitTests.unitTests[test].input; console.log(inputFilename); it('do stuff with

我想用mocha迭代几组测试文件,但我的it()从未执行过

var unitTests = JSON.parse(fs.readFileSync('./test/unitTests.json', 'utf8'));
for (test in unitTests.unitTests) {
  var inputFilename = unitTests.unitTests[test].input;
  console.log(inputFilename);

  it('do stuff with the file', function(done) {
      ...
  });
}
My console.log语句会打印每个输入文件名,但it()中的代码永远不会执行。如果我注释掉循环,它运行得很好

看来我的假设不正确

我怎么能在摩卡咖啡馆看一眼it呢


原来我原来的问题是错的

我在调试器中运行它,看到console.log语句在it()块执行之前执行。然后我退出了节目。如果让它运行,我的it()块将按预期运行


看起来It()的异步特性让我大吃一惊。

始终将测试包装在
描述
块中:

const fs = require('fs');
var unitTests = JSON.parse(fs.readFileSync('./test/unitTests.json', 'utf8'));

function doStuff(test) {console.log("did stuff with " + test.input)}

describe('runTests', function() {
  unitTests.unitTests.forEach(function(test) {
    it('does stuff with ' + test.input, function(done) {
      var res = doStuff.apply(null, [test]);
      done();
    });
  });
});
/node\u modules/.bin/mocha test.js的输出

  runTests
did stuff with 1.foo
    ✓ does stuff with 1.foo
did stuff with 4.foo
    ✓ does stuff with 4.foo
did stuff with 3.foo
    ✓ does stuff with 3.foo
did stuff with 2.foo
    ✓ does stuff with 2.foo


  4 passing (8ms)
更多信息:

另外,我用

{"unitTests": [{"input": "1.foo"},{"input": "4.foo"},{"input": "3.foo"},{"input": "2.foo"}]}

始终将测试包装在
description
块中:

const fs = require('fs');
var unitTests = JSON.parse(fs.readFileSync('./test/unitTests.json', 'utf8'));

function doStuff(test) {console.log("did stuff with " + test.input)}

describe('runTests', function() {
  unitTests.unitTests.forEach(function(test) {
    it('does stuff with ' + test.input, function(done) {
      var res = doStuff.apply(null, [test]);
      done();
    });
  });
});
/node\u modules/.bin/mocha test.js的输出

  runTests
did stuff with 1.foo
    ✓ does stuff with 1.foo
did stuff with 4.foo
    ✓ does stuff with 4.foo
did stuff with 3.foo
    ✓ does stuff with 3.foo
did stuff with 2.foo
    ✓ does stuff with 2.foo


  4 passing (8ms)
更多信息:

另外,我用

{"unitTests": [{"input": "1.foo"},{"input": "4.foo"},{"input": "3.foo"},{"input": "2.foo"}]}

我有一个街区。我现在正在开会,但我会在会议结束后看看你的答案。。。谢谢我刚刚编辑了这个问题,结果是我的代码正常工作,但它()的异步特性让我大吃一惊。既然你帮了我的忙,我就把你的答案记为正确答案。谢谢我有一个街区。我现在正在开会,但我会在会议结束后看看你的答案。。。谢谢我刚刚编辑了这个问题,结果是我的代码正常工作,但它()的异步特性让我大吃一惊。既然你帮了我的忙,我就把你的答案记为正确答案。谢谢