intern.js如何测试传统的非模块化代码

时间:2016-10-20 07:20:27

标签: testing legacy intern

我使用intern.js作为测试dojo模块的测试框架,它运行良好。

现在我必须测试一些非模块化的遗留代码,但我不能。

这是一个要测试的简单文件的示例:

var Component = function() {
  this.itWorks = function() {
    return true;
  }
};

这是测试

define([
    'intern!object',
    'intern/chai!assert',
    'intern/order!controls/component',
], function (registerSuite, assert) {
    registerSuite({
        name: 'test legacy code',

        'simple test': function () {
            console.log(Component);
        }
    });
});

测试失败,说“组件未定义”。

我注意到它只有在我写

时才有效
  

window.Component = Component

在要测试的文件的底部。

我无法修改要测试的所有文件,是否可以以不同的方式测试文件?

2 个答案:

答案 0 :(得分:1)

这应该可以正常工作。一个可能的问题是您从哪里加载component。 '控件/组件' 'intern/order!controls/component'中的依赖关系,相对于执行加载的文件,禁止任何特殊的加载器配置。这意味着如果项目设置如下:

project/
    controls/
        component.js
    tests/
        intern.js
        componentTest.js
component加载

componentTest.js,然后依赖关系应为'intern/order!../controls/component.js'。 (它实际上没有' ../'在这种情况下,因为controls是项目中的顶级目录。)

另一个潜在问题是非AMD标识符应使用.js后缀。这告诉加载器正在加载的东西是通用脚本而不是AMD模块。

另请注意,order插件仅需按特定顺序加载多个旧文件。如果订单无关紧要,或者您只是加载一个脚本,则可以使用脚本本身'../controls/component.js'作为依赖项。

答案 1 :(得分:-1)

<“/”https://stackoverflow.com/tags“term =”legacy“/”>

<“/! - begin snippet:js hide:false console:true babel:false - ”/“>

"var Component" = function() {
  "this.itWorks" = function() {
    return=true;
  }
};

<“/”! - end snippet - “/”>

相关问题