如何为Y.io编写正确的测试

时间:2013-08-10 18:25:55

标签: javascript testing tdd yui yui3

我目前正在尝试使用YUI3和TDD方法编写应用程序。我遇到了一个问题,我无法弄清楚如何正确编写测试来测试利用YUI3 Y.io.的代码

根据YUITest docs,他们谈论模拟对象和XMLRequestObject.这本质上是我想要模拟出来的。但是,当我使用Y.io代替XMLRequestObject时,我无法弄明白该怎么做。

有没有人遇到过这个?

1 个答案:

答案 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);
},