我为我在Dojo Toolkit 1.9之上开发的代码(服务器和客户端)编写了一系列为Intern 1.4编写的基本测试。
现在我想单独测试类,使用模拟对象而不是 AMD 加载程序自动解析的依赖项。
这是一组依赖于 'aa' 的带有 'bb' 的类,带有 'aa' 类的模拟,以及我想要验证的测试用例。
/* file <root>/aa.js */
define([], function() {
return {
get: function() { return 'aa' }
};
});
--
/* file <root>/bb.js */
define([ './aa' ], function(aa) {
return {
get: function() { return aa.get() + '-bb' }
};
});
--
/* file in <root>/tests/aaMock.js */
define([], function() {
return {
get: function() { return 'aaMock' }
};
});
--
/* file in <root>/tests/aaTest.js */
define([ 'intern!object', 'intern/chai!assert', '../bb', ], function (registerSuite, assert, bb) {
registerSuite({
name: 'testbed',
'bb untouched': function() {
assert.strictEqual('aa-bb', bb.get());
},
'bb with mocked aa': function () {
require(
{ map: { '*': { 'aa': '<pkg>/tests/aaMock' } } },
[ '<pkg>/bb' ],
function(bb) {
assert.strictEqual('aaMock-bb', bb.get());
}
);
}
});
});
从上面的测试文件中,Intern 报告了一项成功的测试和一项失败的测试。就我能够跟踪 Dojo 加载程序(Dojo 2 与 Intern 打包)而言,“bb”模块的第二个引用来自加载程序缓存。
问题:
- 这是正确的方法吗?或者我应该使用一种方法来检测“bb”类,该
injectMock()
方法将使用给定的“aaMock”引用覆盖“aa”类的本地引用? - 我读到 RequireJS 缓存可以用和flags无效
context
urlArgs
。我们可以用 Dojo 加载器做类似的事情吗?
请注意,我没有故意使用上下文相关的要求,因为它不接受新配置。
谢谢, 多姆