摘要:小結(jié)我們初步了解了使用來進(jìn)行測試,這樣有利于我們接下來去理解使用進(jìn)行單元測試翻譯中
這是一些列文章,陸續(xù)翻譯整理中...
原文地址:http://www.bradoncode.com/blog/2015/05/12/angularjs-testing-getting-started/
@ Bradley Braithwaite
前言在寫測試之前,我們還得對基礎(chǔ)的JS的單元測試框架和如何寫測試用例等一些問題做一個(gè)簡要的介紹。
先說說 jasmine ,它算作一個(gè)行為驅(qū)動(dòng)開發(fā)(behaviour driven development,BBD)的 JavaSciprt的框架,會(huì)讓人困惑的是,它也可以用測試驅(qū)動(dòng)開發(fā)(test driven development,TBD)的思想來寫測試。
BBD和TBD兩種風(fēng)格會(huì)有些區(qū)別,但是使用jasmine確實(shí)可以用TBD的方式。jasmine會(huì)提供一種結(jié)構(gòu)去組織你的測試以及一些函數(shù)來進(jìn)行代碼輸出的斷言。究竟是TBD還是BBD實(shí)際取決于開發(fā)者自己的如何去組織自己的測試,當(dāng)然下文我們僅僅用TBD來進(jìn)行講解。
先建一個(gè)項(xiàng)目文件比如jasmine-test,然后粘貼下面的代碼到一個(gè)html文件中。
用瀏覽器打開該文件。界面如圖:
注意specs,它實(shí)際上指的是用例,它同樣也是BBD的專業(yè)術(shù)語之一。截下來我們先來點(diǎn)簡單的邏輯判斷。
describe("calculator", function () { it("1 + 1 should equal 2"); });
將上面的代碼粘貼到剛才的html文件中。
函數(shù)describe實(shí)際指的就是前文提到的specs(測試的邏輯分組),而函數(shù)it實(shí)際會(huì)展現(xiàn)這組測試。
運(yùn)行結(jié)果如下圖:
由于我們實(shí)際上沒有添加測試的主體,因此狀態(tài)上方顯示的是pending,截下來我們會(huì)添加一段函數(shù).
it("1 + 1 should equal 2", function() { expect(1 + 1).toBe(1); });
上面的截圖,實(shí)際上反應(yīng)的就測試失敗,因?yàn)?b>1+1并不等于2。
上面出現(xiàn)了兩個(gè)新函數(shù)expect以及toBe,Expect代表著預(yù)期,我們將需要使用的測試放進(jìn)區(qū),然后函數(shù)會(huì)進(jìn)行運(yùn)行結(jié)果的斷言。而toBe呢則代表著匹配器,卡框架提供的匹配器還有很多,常用的大概有下面這些:
expect(true).toBe(true); expect(false).not.toBe(true); expect(1).toEqual(1); expect("foo").toEqual("foo"); expect("foo").not.toEqual("bar");
我們再把這段代碼改成正常的。
it("1 + 1 should equal 2", function() { expect(1 + 1).toBe(2); });
刷新瀏覽器,我們就可以看到正確的結(jié)果了。
前面我們大致了解了jasmine的基本用法,實(shí)際上測試驅(qū)動(dòng)開發(fā)的的一個(gè)基本原則就是我們再寫功能的同時(shí)寫測試,花些時(shí)間去掌握這項(xiàng)技能有利于提升我們的工作效率的。
流程大致如圖三個(gè)部分,我們所寫的每個(gè)測試都英國是遵循這三個(gè)流程。
紅色部分:失敗的測試,有利于我們消除bug;
綠色部分:需要我們寫足夠的代碼讓我們的測試通過,透過前面的部分,我們可以了解這些bug;
黃色部分,代碼重構(gòu)過程我們可以避免重蹈覆轍,并且提升安全性。
Demo記下來我們寫一些代碼去體會(huì)上面的流程
寫一個(gè)不通過的測試describe("calculator", function () { it("1 + 1 should equal 2", function () { expect(calculator.sum(1, 1)).toBe(2); }); });2.使測試通過
如果我們開始寫足夠多的代碼時(shí)候,其中一些可能類似下面:
var calculator = { sum: function(x, y) { return 2; // <-- note this is hardcoded } } describe("calculator", function () { it("1 + 1 should equal 2", function () { expect(calculator.sum(1, 1)).toBe(2); }); });
這樣做有利于我們避免代碼更多的錯(cuò)誤
3.重構(gòu)在我們確保我們的邏輯正常后,我們可以測試更多用例,直到結(jié)果能夠一直和期望的一致。
var calculator = { sum: function(x, y) { return x + y; } } describe("calculator", function () { it("1 + 1 should equal 2", function () { expect(calculator.sum(1, 1)).toBe(2); }); });小結(jié)
我們初步了解了使用jasmine來進(jìn)行TBD測試,這樣有利于我們接下來去理解 使用karama進(jìn)行單元測試(翻譯中...)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/79621.html
摘要:原文地址上面一篇文章簡單介紹了如何使用進(jìn)行的單元測試我們用了一段簡單的代碼進(jìn)行計(jì)算的測試。添加測試接下來終于到了我們的主題,添加一些單元測試給我們忽略代碼中部分,主要集中在的代碼中。 原文地址:http://www.bradoncode.com/blog/2015/05/17/angularjs-testing-controller/@Bradley Braithwaite show...
摘要:前面我們寫過了的一篇文章開始對進(jìn)行單元測試而提供了非常有用的工具去幫助我們進(jìn)行的測試。接下來,會(huì)增加一些內(nèi)容寫測試用例接下來我們可以開始進(jìn)行測試了,我們在命令行工具里輸入下面的命令我們將下面的代碼粘貼到中去。 showImg(https://segmentfault.com/img/bVx65M); 緊隨前文如何對Angular Controller進(jìn)行單元測試,但是我們也提到了前文工...
摘要:雖然這些東西都是非常棒的,但是它們都不是實(shí)現(xiàn)延遲加載所必需的東西。我們通過的配置對象中的屬性就可以實(shí)現(xiàn)延遲加載。單元測試的技巧把改成是全局依賴并不意味著你應(yīng)該從控制器中刪除它。因?yàn)樵趩卧獪y試中,你只會(huì)加載這一個(gè)控制器而非整個(gè)應(yīng)用模塊。 原文鏈接:http://michalzalecki.com/lazy-load-angularjs-with-webpack/ 隨著你的單頁應(yīng)用擴(kuò)大,...
摘要:是一個(gè)為應(yīng)用添加觸摸手勢的非常受歡迎的庫文中將看到結(jié)合一起使用是多么的簡單原文示例是針對版本經(jīng)過測試在目前最新的版本中此教程依然適用文章將以來統(tǒng)一代稱版本名詞滑動(dòng)和類似但滑動(dòng)更快速無粘滯左滑右滑上滑下滑頭像輪播簡介我們將構(gòu)建一個(gè)頭像輪播可以 HammerJS 是一個(gè)為 web 應(yīng)用添加觸摸手勢的非常受歡迎的庫,文中,將看到 Angular 結(jié)合 HammerJS 一起使用是多么的簡單 ...
摘要:下一篇譯精通使用開發(fā)二原版書名第一章之道這一章主要是介紹,包括這個(gè)框架以及它背后的項(xiàng)目。幸運(yùn)的是,擁有一個(gè)活躍的,支持度高的社區(qū)。另外,社區(qū)還為已經(jīng)存在的工具箱里貢獻(xiàn)了許多有意思的工具。 下一篇:【譯】《精通使用AngularJS開發(fā)Web App》(二) 原版書名:Mastering Web Application Development with AngularJS Ch...
閱讀 3226·2021-10-13 09:40
閱讀 3688·2019-08-30 15:54
閱讀 1309·2019-08-30 13:20
閱讀 2993·2019-08-30 11:26
閱讀 475·2019-08-29 11:33
閱讀 1099·2019-08-26 14:00
閱讀 2356·2019-08-26 13:58
閱讀 3366·2019-08-26 10:39