我目前正在尝试使用YUI3和TDD方法编写应用程序。我遇到了一个问题,我无法弄清楚如何正确编写测试来测试利用YUI3 Y.io
.的代码
根据YUITest
docs,他们谈论模拟对象和XMLRequestObject.
这本质上是我想要模拟出来的。但是,当我使用Y.io
代替XMLRequestObject
时,我无法弄明白该怎么做。
有没有人遇到过这个?
答案 0 :(得分:2)
您可以告诉Y.IO
使用默认XMLRequestObject
以外的自定义传输。可能还有其他方法可以将自定义传输添加到Y.IO
,但这对我有用:
创建一个将自定义传输模式模拟修补到Y.IO
的函数:
function _createMockTransport(mockXHR) {
Y.IO.transports.mock = function () {
return mockXHR;
}
}
然后,在您的设置功能中,添加以下内容的变体:
// I change the Y.IO instantiation configuration when instantiating my application
this.application = new Application({ yIOConfig: { xdr: { use: 'mock' }}})
this.xhr = Y.Mock();
Y.Mock.expect(this.xhr, {
method: 'send',
args: [Y.Mock.Value.Object, '/foo', Y.Mock.Value.Object]
});
_createMockTransport(this.xhr);
示例测试如下所示:
"test /foo": function () {
this.appliation.doServerCall();
Y.Mock.verify(this.xhr);
},