【问题标题】:How to unit test a non AMD JavaScript file using Intern?如何使用 Intern 对非 AMD JavaScript 文件进行单元测试?
【发布时间】:2015-02-15 02:37:30
【问题描述】:

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

// ./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");

    ...

如何让 Intern 识别 Snake 类?

【问题讨论】:

    标签: intern


    【解决方案1】:

    我发现了问题所在。在实习生配置文件中,我需要设置 loader packages 选项如下:

    // ./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 未定义。

    【讨论】:

    • 如果代码本身尝试使用module.exports 定义节点模块,我仍然会遇到问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多