我有一個BackboneView我在創建如何測試在其構造函數中調用集合的視圖的視圖?
var my_collection = new Collection();
new MyView({temp: template, collection: my_collection });
傳遞一個集合的觀點裏面,取()方法被調用集合中的構造類似這樣的
export class MyView extends Backbone.View {
constructor(options){
this.collection = options.collection;
super();
this.collection.fetch().done(function(resp){
that.render();
})
}
render(){
}
}
我(過去緊張)的一系列測試的視圖的UI /模板這樣
describe('testing my view', function() {
it('should have one main child - div 6 ', function() {
expect(myview.el.children.length).to.equal(1);
});
});
然而,因爲我現在已經補充說,通過收集到的代碼測試該視圖,並在構造函數集合上調用fetch方法,我的所有測試都失敗了,因爲每次運行測試時,視圖都會嘗試調用fetch方法。即使我通過存根收藏,我必須設置一個url
和視圖將嘗試在存根集合導致404
var gs = class StubCollection extends Backbone.Collection{
constructor(options){
this.url = '/blah';
}
}
const drv = new MyView({temp: template, collection: new gs()});
我需要調用獲取在視圖中收集獲取(即我不能使用該代碼)。在這種情況下如何繼續測試視圖?
非常感謝。你可以更新你的答案或添加評論,包括一個例子如何模擬'骨幹。保存()'以類似的方式(我遇到了類似的問題) – Leahcim
@Leahcim您可以存根模型的'sync'方法(提出請求),以模擬服務器返回改變屬性的哈希:'函數同步(方法,模型,期權){$返回.Deferred()解決(options.attrs || model.toJSON(選項))的承諾()。 }' – Spike