如何从 JS 模块自动生成单元测试?

Ale*_*kov 6 javascript testing unit-testing yeoman intern

我继承了一个包含多个 JavaScript 文件的项目。他们每个人都有一堆功能;这些文件以 AMD 风格定义。

例如:

math.js

define([], function () {

  return {

    func1: function (a, b) { 
      return a + b;
    },

    func2: function (c, d) {
      return c + d;
    },

  };
});
Run Code Online (Sandbox Code Playgroud)

我想在tests文件夹中生成一个名为 ( math.js)的新文件,该文件将包含框架tdd样式的单元测试的样板代码intern

我使用了intern-generator一个 Yeoman 生成器,它可以搭建脚手架并生成一个具有指定名称和路径的测试文件,但是,这个生成器不会让我创建引用 JS 文件中的函数的单元测试。

所以,对于math.js源文件,我想创建一个测试文件(自动):

define(function (require) {
  var tdd = require('intern!tdd');
  var assert = require('intern/chai!assert');
  var math = require('src/app/math');

  tdd.suite('Suite name', function () {

    tdd.test1('Test foo', function () {
      math.func1('breaks');
    });

    tdd.test('Test bar', function () {
      math.func2('breaks');

    });
  });
});
Run Code Online (Sandbox Code Playgroud)

这样,我可以从预先创建的所有单元测试文件开始,并且我知道我的所有单元测试最初都会中断,我会让它们一一通过。此外,通过这种方式,我可以确保将源脚本文件中的所有函数都放入测试中。

当然,我想为我的所有源 .js 文件生成这些测试 .js 文件。是否有任何生成器或库/脚本可以让我这样做?