摘要:主要由三部分組成創(chuàng)建數(shù)據(jù),進(jìn)行數(shù)據(jù)驗(yàn)證,銷毀或者保存到服務(wù)器上。綁定模板,綁定界面元素的事件,初始的渲染,模型值改變后的重新渲染和界面元素的銷毀等。這樣我們便可以完成一個(gè)簡單地測試的書寫。
在一點(diǎn)點(diǎn)慢慢地寫一個(gè)簡單的SPA應(yīng)用,在這樣的一個(gè)過程里,我們也不得不寫一些測試以方便重構(gòu)。
Backbone CollectionBacbkbone主要由三部分組成
model:創(chuàng)建數(shù)據(jù),進(jìn)行數(shù)據(jù)驗(yàn)證,銷毀或者保存到服務(wù)器上。
collection:可以增加元素,刪除元素,獲取長度,排序,比較等一系列工具方法,說白了就是一個(gè)保存 models的集合類。
view:綁定html模板,綁定界面元素的事件,初始的渲染,模型值改變后的重新渲染和界面元素的銷毀等。
于是我們簡單地定義了一個(gè)Model以及一個(gè)Collection
define(["backbone"], function(Backbone) { var RiceModel = Backbone.Model.extend({}); var Rices = Backbone.Collection.extend({ model: RiceModel, url: "http://localhost:8080/all/rice", parse: function (data) { return data; } }); return Rices; });
用來獲取數(shù)據(jù),接著我們便可以創(chuàng)建一個(gè)測試,測試代碼如下
define([ "sinon", "js/Model/Rice_Model" ], function( sinon, Rices) { "use strict"; beforeEach(function() { this.server = sinon.fakeServer.create(); this.rices = new Rices(); }); afterEach(function() { this.server.restore(); }); describe("Collection Test", function() { it("should request the url and fetch", function () { this.rices.fetch(); expect(this.server.requests.length) .toEqual(1); expect(this.server.requests[0].method) .toEqual("GET"); expect(this.server.requests[0].url) .toEqual("http://localhost:8080/all/rice"); }); }); });
在這里我們用sinon fake了一個(gè)簡單的server
this.server = sinon.fakeServer.create();
這樣我們就可以在fetch的時(shí)候mock一個(gè)response,在這時(shí)我們就可以測試這里的URL是不是我們想要的URL。
this.rices.fetch(); expect(this.server.requests.length) .toEqual(1); expect(this.server.requests[0].method) .toEqual("GET"); expect(this.server.requests[0].url) .toEqual("http://localhost:8080/all/rice");
這樣我們便可以完成一個(gè)簡單地測試的書寫。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/8691.html
摘要:應(yīng)用的功能這個(gè)應(yīng)用是一個(gè)個(gè)人簡歷生成器。比較好的教程有這一個(gè)。這樣的命名污染問題自然顯而易見。而且發(fā)出多次請求也會影響性能。明顯不利于維護(hù)。然而我希望能夠不發(fā)生變化,因?yàn)槭窃谖募那疤嵯碌臉?biāo)簽頁,不能換一個(gè)標(biāo)簽就重建一個(gè)。 為什么學(xué)習(xí)backbone?這是個(gè)好問題。在這個(gè)前端框架爆炸的年代,比起backbone,對開發(fā)來說有更多更好的選擇,react,vue,angular等等。但這些...
摘要:概述強(qiáng)大靈活的運(yùn)用是通過配置文件決定的。下面通過示例來進(jìn)行深度的探討配置文件的使用。配置文件的位置配置文件的位置和聲明用法是相對于這個(gè)腳本文件來決定的。配置文件參數(shù)的介紹所有模塊的查找根路徑。 概述 Requires強(qiáng)大靈活的運(yùn)用是通過配置文件決定的。通過配置文件我們可以給模塊取別名、給模塊加上版本標(biāo)識、設(shè)置模塊依賴、包裝非模塊等強(qiáng)大功能。同時(shí)RequireJS的優(yōu)化器也大量使用了配...
摘要:是自帶的前端優(yōu)化工具,可以對項(xiàng)目中的和代碼使用或者進(jìn)行壓縮合并。這篇文章介紹的使用和配置方法,幫助大家解決使用中碰到的問題。對腳本的優(yōu)化支持目前流行的和兩種壓縮方式,需要環(huán)境支持,而則需要環(huán)境。定義要被優(yōu)化的模塊數(shù)組。 RequireJS Optimizer 是 RequireJS 自帶的前端優(yōu)化工具,可以對 RequireJS 項(xiàng)目中的JavaScript和CSS 代碼使用?Ugli...
摘要:使用,會在相關(guān)的加載后執(zhí)行回調(diào)函數(shù),這個(gè)過程是異步的,所以它不會阻塞頁面。加載的模塊會以參數(shù)形式傳入該函數(shù),從而在回調(diào)函數(shù)內(nèi)部就可以使用這些模塊。 什么是RequireJS? RequireJS 是一個(gè)JavaScript模塊加載器。它非常適合在瀏覽器中使用, 但它也可以用在其他腳本環(huán)境, 就像 Rhino and Node. 使用RequireJS加載模塊化腳本將提高代碼的加載速度和...
閱讀 1014·2021-11-22 14:56
閱讀 975·2021-11-11 16:54
閱讀 7559·2021-09-23 11:55
閱讀 3000·2021-09-22 15:57
閱讀 2788·2021-08-27 16:25
閱讀 667·2019-08-30 15:55
閱讀 1657·2019-08-30 15:43
閱讀 1593·2019-08-30 14:23