【问题标题】:How do you read from a file on mocha prior to running tests?在运行测试之前如何从 mocha 上的文件中读取?
【发布时间】:2017-04-24 22:01:30
【问题描述】:

我目前正在 API 上运行测试 - 使用 Mocha 运行没有问题。测试数组存储在文件顶部的变量“tests”中。我想从文本文件中读取测试信息,并在运行测试(一次)之前将信息解析为变量。

我尝试过同步和异步使用 before()(下)

//Synchronously
describe("API Tests", function (done) {
    before(function(){
        tests = fs.readFileSync('./json.txt', 'utf8');
        tests = JSON.parse(tests);
    });
    for (var i = 0; i < tests.length; i++) {
        runTest(tests[i]);
    }
    done();
});

//Asynchronously
describe("API Tests", function () {
var tests = "";
before(function(){
    fs.readFile('./json.txt', 'utf8', function(err, fileContents) {
    if (err) throw err;
    tests = JSON.parse(fileContents);
    });
});

for (var i = 0; i < tests.length; i++) {
    runTest(tests[i]);
}});

Node 返回一个错误,说明文件不存在(它确实存在)。

此外,我尝试运行文件读取(同步和异步),在回调时执行封装描述(如下所示)。似乎无法检测到病例,返回“未找到测试”。

var tests;
fs.readFile('./json.txt', 'utf8', function(err, fileContents) {
if (err) throw err;
tests = JSON.parse(fileContents);

describe("API Tests", function () {
    for (var i = 0; i < tests.length; i++) {
        runTest(tests[i]);
    }
});
});

如何在运行 Mocha 之前读取包含测试用例的文件?我在 Webstorm 中使用 Mocha。

【问题讨论】:

  • AFAIK describe 不应传递 done 回调。

标签: javascript node.js file testing mocha.js


【解决方案1】:

异步版本错误,需要给before传递一个done回调,否则钩子会同步运行。像

before(function(done){
    fs.readFile('./json.txt', 'utf8', function(err, fileContents) {
      if (err) throw err;
      tests = JSON.parse(fileContents);
      done();
    });
});

【讨论】:

  • 为什么没有标记为解决方案?这对我有帮助。谢谢!
  • 谢谢。似乎如果我将 readFile 包装在另一个函数中,那么这个函数将无法测试。仅当我承诺此功能时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 2020-03-14
  • 2013-05-20
  • 1970-01-01
  • 2016-08-07
  • 2019-11-03
相关资源
最近更新 更多