我使用Backbone并在accountsView.js中具有以下功能:
loadData: function () {
this.accountsCollection.fetch()
.done(_.bind(this.loadDefaultAccounts, this))
.fail(_.bind(this._accountsLoadFailed, this));
},
在qunit测试中,我试图像这样嘲笑它:
sandbox.stub(Backbone.Collection.prototype, "fetch").yieldsTo("done", {});
但是在运行test时会出现以下错误:
“fetch预计会屈服于'完成',但没有具有此类属性的对象 过去了。“
我错过了什么?
答案 0 :(得分:1)
yieldsTo
看起来像是为了处理基于回调的代码。
要模拟AJAX请求,您应该设置fake server并执行类似
的操作this.server.respondWith("GET", "/some/article/comments.json",
[200, { "Content-Type": "application/json" },
'[{ "id": 12, "comment": "Hey there" }]']);
答案 1 :(得分:0)
非常感谢提示。为了我的测试工作,视图中的函数应该是这样的:
loadData: function () {
this.accountsCollection.fetch({
success: _.bind(this.loadDefaultAccounts, this),
error: _.bind(this._accountsLoadFailed, this),
});
},
或者在@TJ建议中使用测试假服务器。