intern - 如何使用 Intern 对非 AMD JavaScript 文件进行单元测试?

标签 intern

我有一个带有 Snake 类的非 AMD JavaScript 文件,如下所示:

// ./www/js/Snake.js
function Snake(initPos) {
  this.pos = initPos;
}

// I want to unit test this method.
Snake.proptotype.move = function(dir) {
  // Do things.
};

我编写了一个实习生模块来测试它:

// ./test/Snake.js
define([
  'intern!object',
  'intern/chai!assert',
  "../www/js/Snake"
], function (registerSuite, assert, Snake) {
  registerSuite({

  name: 'Snake',

  move: function () {
    // Intern complains that this object is not a function.
    var snake = new Snake([
      {x: 0, y: 0}, 
      {x: 1, y: 0},
      {x: 2, y: 0}
    ]);

    snake.move("right");

    ...

如何让实习生认识Snake类?

最佳答案

我发现问题所在了。在实习生配置文件中,我需要设置加载程序包选项,如下所示:

// ./tests/intern.js
define({
  ...
  loader: {
    packages: [ { name: 'app', location: 'www/js' } ]
  },
  ...

然后在我的测试模块中我需要导入 Snake.js 文件:

// ./tests/Snake.js
define([
  'intern!object',
  'intern/chai!assert',
  "intern/order!app/Snake.js"
], function (registerSuite, assert) {
  registerSuite({
  name: 'Snake',

  move: function () {
    var snake = new Snake([
      {x: 0, y: 0}, 
      {x: 1, y: 0},
      {x: 2, y: 0}
    ]);
    ...

现在它不再提示 Snake 未定义。

关于intern - 如何使用 Intern 对非 AMD JavaScript 文件进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28522494/

相关文章:

intern - 如何使用通配符在 Intern 中指定测试套件?

javascript - 如何在实习生功能测试中使用 dijit/registry

ios - 我们可以在已经启动的 IOS 模拟器上启动 intern 脚本吗

javascript - before() 中的实习生异步调用

google-chrome - 从命令行启动 Chrome 仿真

google-chrome - 是否可以使用带有 InternJS 的 Selenium Server 在移动仿真模式下运行 chrome

javascript - 实习生功能测试 : skip a suite/test

javascript - 为 internjs 功能测试设置 cookie

javascript - 在实习生测试套件之间传递数据

javascript - 我们如何使用 InternJS 对 Chrome 打包应用程序(例如 Chromebook 应用程序)执行自动化测试