我正在尝试m.request
在无 DOM 环境中对秘银模型进行单元测试。
我使用浏览器的 XMLHttpRequest 在浏览器环境中将此测试用作集成测试,但希望可以选择单独运行它。
我正在考虑模拟 XMLHttpRequest 的响应以获得正确的初始化m.request
,但我不确定从哪里开始。我有一个从测试中删除的 XMLHttpRequest 的幼稚实现,并研究了m.request
.
m.request
因为我相信 Mithril 可以工作(并且在技术上是被测单元的依赖项),所以完全排除测试转换是否更有意义?这让我有点害怕,因为m.request
链接行为可能很难存根。
我很乐意接受一个回答,该回答通常描述了我需要采取哪些步骤才能在这方面取得一些进展,和/或一些关于什么是有意义的测试的建议。
require('chai').should();
require('mithril');
m.deps({ XMLHttpRequest: function() {
this.open = function() {
}
this.setRequestHeader = function() {
}
this.send = function() {
}
}});
var Curriculum = require('../../../app/modules/practice/practice.curriculum');
describe('Curriculum', function() {
it('can retrieve a list of modules', function(done) {
Curriculum.modules().then(function(modules) {
modules.should.deep.equal([
{ name: 'Module 1' },
{ name: 'Module 2' },
{ name: 'Module 3' }
]);
done();
});
});
});
目前,在没有输出或错误的情况下,超时运行此测试mocha
无济于事。
被测单元的来源,如果有帮助:
module.exports = {
modules: function() {
// URL obscured to protect the innocent.
return m.request({
method: 'GET',
url: 'http://working.url'
}).then(function(objects) {
var transformed = objects.map(function(object) {
return { name: object.name };
});
return transformed;
});
}
};