node.js - 动态运行 Mocha 测试

标签 node.js testing mocha.js

我正在尝试动态运行一系列测试。我有以下设置,但它似乎没有运行,而且我没有收到任何错误:

import Mocha from 'mocha';
const Test = Mocha.Test;
const Suite = Mocha.Suite;
const mocha = new Mocha();
for (let s in tests) {
  let suite = Suite.create(mocha.suite, s);
  tests[s].forEach((test) => {
    console.log('add test', test.name)
    suite.addTest(new Test(test.name), () => {
      expect(1+1).to.equal(2);
    });
  });
}
mocha.run();

我正在运行的测试如下所示:

{ todo: 
  [ { name: 'POST /todos',
      should: 'create a new todo',
      method: 'POST',
      endpoint: '/todos',
      body: [Object] } ] }

(虽然在这一点上我的测试只是试图检查一个基本的期望)

根据 console.logs,迭代似乎很好,而且似乎正在添加测试,所以我对操作流程充满信心,我只是无法执行或出错。

最佳答案

您必须将测试函数传递给 Test 构造函数,而不是传递给 suite.addTest。因此,更改您的代码以像这样添加测试:

suite.addTest(new Test(test.name, () => {
    expect(1+1).to.equal(2);
}));

这是我正在运行的完整代码,改编自您的问题:

import Mocha from 'mocha';
import { expect } from 'chai';
const Test = Mocha.Test;
const Suite = Mocha.Suite;
const mocha = new Mocha();

var tests = { todo:
  [ { name: 'POST /todos',
      should: 'create a new todo',
      method: 'POST',
      endpoint: '/todos',
      body: [Object] } ] };

for (let s in tests) {
  let suite = Suite.create(mocha.suite, s);
  tests[s].forEach((test) => {
      console.log('add test', test.name);
      suite.addTest(new Test(test.name, () => {
          expect(1+1).to.equal(2);
      }));
  });
}
mocha.run();

当我使用 node_modules/.bin/babel-node test.es6 运行上面的代码时,我得到了输出:

  todo
    ✓ POST /todos


  1 passing (5ms)

关于node.js - 动态运行 Mocha 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848584/

相关文章:

javascript - 功能组件中的 React Navigation getParams

node.js - Mocha 测试 done() 和 done 作为函数参数之间的区别

java - Karate karate-config.js 不是 js 函数

javascript - 有没有办法添加自定义方法来断言 chai 接口(interface)?

javascript - 找不到模块 'meteor'

javascript - 如何在 MongoDB 中查询引用的对象?

node.js - socket io鼠标点击事件

javascript - 删除nodejs对象键前缀

unit-testing - Windows 虚拟测试环境 - 基于 Hyper-V

javascript - Mocha,数组的数组和范围