【问题标题】:Testing custom JavaScript (not Node module) with Intern与实习生一起测试自定义 JavaScript(不是 Node 模块)
【发布时间】:2013-04-25 21:31:03
【问题描述】:
  1. 是否可以为自定义客户端创建和运行测试套件 JavaScript,不是作为 Node 模块创建的?应该如何 配置要改吗?

  2. Intern 配置中有加载程序部分,指定 如果我做对了,将被加载的包。是否有必要 以某种方式在此处包含我的自定义 JS 代码?

  3. 我应该把我的测试套件放在哪里,它们应该是什么样子,当它们不属于任何 Node 包时,只属于我的自定义 JS 代码。换句话说,我将如何“加载”并运行它们?

我试图让它以某种方式工作,而我没有使用 Node.js 的经验。我的尝试结果如下:

$ node client.js config=tests/js/intern
Defaulting to "console" reporter

【问题讨论】:

    标签: javascript unit-testing intern


    【解决方案1】:

    1。您的测试模块总是需要编写为 AMD 模块,但您可以测试任何您想要的客户端代码。在您的测试模块中,只需像任何其他模块一样将非 AMD 代码指定为依赖项,然后访问您的脚本创建的全局变量:

    define([
      'intern!tdd',
      'intern/chai!assert',
      'intern/order!myPackage/myFoo.js'
    ], function (tdd, assert /* note, no assignment here */) {
      tdd.suite('foo suite', function () {
        tdd.test('something in foo', function () {
          // accessing a global variable created by `myPackage/myFoo.js`
          assert.ok(window.myFoo, 'Global myFoo object should exist');
        });
      });
    });
    

    2。除了在 suites 数组中指定您的测试模块外,您无需在 Intern 配置中做任何明确的操作即可使其工作。

    3。需要测试的客户端应用程序的推荐目录结构如下所示:

    / - your entire application
        src/
            index.html - your app’s entry-point HTML
            app/ - your app package, containing application-specific JavaScript to be tested
                foo.js        - Some module `foo`
                tests/        - Intern tests for `app`
                    foo.js    - Tests for `foo`
                    intern.js - Intern configuration for `app`
        node_modules/
            intern/
    

    当然,这取决于您的应用程序的架构方式,但从“从头开始”的方法,这是我们通常推荐的目录结构。

    【讨论】:

    • 那么,脚本定位测试文件的规则是什么,在我们的例子中是 foo.js?如果我在 'suites' 中指定测试套件名称,文件是如何确定的?
    • 测试套件模块的定位规则由 AMD 定义。查找模块时使用的基本 URL 是 intern 目录的上一级。所以,给定上面的目录结构,你可以使用app/tests/foo
    • 请注意,从 Intern 1.2 开始,默认的基本 URL 比 Intern 目录高两级,因为它现在是通过 npm 安装的。但是,您可以更改 loader.baseUrl 配置选项以根据需要修改基本 URL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多