當然,您可以將您的模板文件添加到您的茉莉花測試運行器頁面。
另一種解決方案是模擬你的視圖DOM元素。您可以在構造函數中插入元素,如new View({el: $($('myTemplate').html())})
。有了這個解決方案可以完全模擬出在大多數情況下,HTML
beforeEach(function() {
el = {bind: function(){}};
spyOn(el, 'bind');
var OrderListView = new OrderSumView({el: el, model: model});
});
it('it should render the sum after firing the remove event', function() {
//test that bind('click', someFunction) was called to your element
expect(el.bind).toHaveBeenCalledWith('click', model.bind.argsForCall[0][1]);
// fire up the function that was bind to the click event
el.bind.argsForCall[0][1]()
})
:這樣做,您可以在您的測試添加元素的模擬或間諜,而無需創建基於模板的DOM元素。它是我們測試我們的大型GWT應用程序的方式。使用GWT比使用主幹更容易,因爲我們處於JAVA世界,但原理是一樣的。不要測試DOM,只需測試你的業務邏輯。如果這樣做,我的私人骨幹項目,它運作良好。
也看看這個SO:Stub out a jQuery selector call?
感謝您的回答安德烈亞斯,但我部分不同意你。由於Backbone被設計爲一個前端框架,我們期望核心/業務邏輯的大部分都可以在服務器端處理,儘管API調用例如。 在這個配置中,我的觀點是我們應該只寫集成測試,以便檢查客戶端的正確數據顯示。我可能誤解了一些東西,但我認爲你必須測試DOM元素,而不僅僅是對象的狀態。 – Arnlen 2014-05-12 13:33:38