3

我正在尝试使用 Intern 对我的一个模块进行单元测试tested.js,该模块依赖于另一个模块dependency.js. 因为我使用的是 Browserify,所以tested.js包括以下行:

var dep = require('./lib/dependency.js');

实习生抛出以下错误:

Warning: Error: Attempt to require unloaded module lib/dependency.js

这是我的测试文件的开始:

define([

    'intern!object',

    'intern/chai!assert',

    'src/js/tested'

], function (registerSuite, assert, tested) {

    registerSuite({
            // ... 

我的实习生配置文件使用默认的 Dojo 加载程序。我曾尝试使用 RequireJS,但无法使其正常工作(似乎 Intern 在使用替代 AMD 加载程序方面存在一些持续的问题:https ://github.com/theintern/intern/issues/147,https ://github .com/theintern/intern/pull/132#issuecomment-33403157)。

如何让实习生正确加载所需的依赖项?

编辑:我正在使用 grunt-browserify,但我正在对 un-Browserified 模块进行单元测试——我只提到 Browserify 来解释我为什么使用“require”。

4

1 回答 1

4

你不能在浏览器中加载 CJS/Node.js 模块而不在 Browserify 中运行它们;这就是 Browserify 的全部目的。您需要预先浏览模块,为您的应用程序切换到使用 AMD 模块而不是 CJS 模块,或者引入动态转换模块的代理。

如果您尝试通过 Intern 在 Node.js 中加载 CJS 模块,则需要使用该intern/dojo/node模块来促进该加载:

define([

    'intern!object',

    'intern/chai!assert',

    'intern/dojo/node!src/js/tested'

], function (registerSuite, assert, tested) {

    registerSuite({
            // ... 

有关此文档的测试非 AMD 代码部分的更多信息。

于 2014-02-19T17:06:45.630 回答