使用Intern测试自定义JavaScript(而不是Node模块)

时间:2013-05-01 20:12:32

标签: javascript unit-testing intern

  1. 是否可以为自定义客户端创建和运行测试套件 JavaScript,不是作为Node模块创建的?应该怎么做 配置被改变了吗?

  2. Intern配置中有加载程序部分,指定 如果我做对了,将加载的包。是否有必要 在某种程度上包括我的自定义JS代码?

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

  4. 我试图以某种方式使其工作,而我对Node没有经验。我的尝试是这样的:

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

1 个答案:

答案 0 :(得分:6)

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配置中进行任何明确的操作,除非在/ - 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/ 数组中指定测试模块。

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

{{1}}

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