我使用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
在要测试的文件的底部。
我无法修改要测试的所有文件,是否可以以不同的方式测试文件?
答案 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 - “/”>