jasmine-JavaScript單元測試工具
文章目錄
Jasmine 是什麼?
jasmine是一個用來編寫Javascript測試的框架,它不依賴於任何其它的javascript框架。它有擁有靈巧而明確的語法可以讓你輕鬆的編寫測試程式碼。
官方地址:
https://jasmine.github.io/
Github 下載
https://github.com/jasmine/jasmine
釋出版本下載
https://github.com/jasmine/jasmine/releases
目前最新版本 3.3.0
釋出版本進入以上頁面下載:
快速瞭解
解壓下載的檔案 jasmine-standalone-3.3.0.zip, 目錄如下
三個目錄夾裡面放的是框架的js和一些css, png的資原始檔,SpecRunner.html是一個demo的例項,直接在瀏覽器中檢視:
快速例項
1. 新建一個目錄 jasmine_unittest
2. 將下載的 zip解壓到 jasmine_unittest, 解壓後的目錄是jasmine, 裡面包含 lib, src等子目錄
- 新建js 檔案jasmineHelloWorld.js,內容如下:
describe("My first Jasmine test", function() { it("nothing", function() { }); });
- 新建html檔案 jasmineHelloWorld.html, 內容如下:
<html> <head> <link rel="shortcut icon" type="image/png" href="jasmine/lib/jasmine-3.3.0/jasmine_favicon.png"> <link rel="stylesheet" type="text/css" href="jasmine/lib/jasmine-3.3.0/jasmine.css"> <script type="text/javascript" src="jasmine/lib/jasmine-3.3.0/jasmine.js"></script> <script type="text/javascript" src="jasmine/lib/jasmine-3.3.0/jasmine-html.js"></script> <script type="text/javascript" src="jasmine/lib/jasmine-3.3.0/boot.js"></script> <script type="text/javascript" src="jasmineHelloWorld.js"></script> </head> <body> </body> </html>
這裡匯入了jasmine的js和css檔案
5. 在Chrome中開啟jasmineHelloWorld.html, 也可按F12開啟debug模式看一下控制檯。
測試看上去通過了, 但是會提示 “has no expectations.” 並在在控制檯有列印。
如果是Java後端開發人員對這個很容易理解, 類似JUnit中測試類沒有測試方法的提示。
6.增加測試,改動jasmineHelloWorld.js如下:
describe(“My first Jasmine test”, function() {
it(“nothing”, function() {
expect(1).toBe(1);
});
});
expect(1).toBe(1); 字面意思就是1期望等於1 , 看一下頁面效果
- 測試失敗效果
修改 expect(1).toBe(1); 為 expect(1).toBe(2);
到這,初步的功能應該瞭然了。
語法介紹
在測試上,有一些術語,對比一下,就很容易理解jasmine的語法,包括:
測試集合、測試包: Test Suite,
測試用例: Test Case
對應到jasmine
- describe(string, function):可以理解為是一個測試集或者測試包。
引數string:描述測試包的資訊
引數function:測試集的具體實現 - it(string, function):測試用例(官方稱之為spec)。
引數string:描述測試用例的資訊
引數function:測試用例的具體實現
每個測試檔案中可以包含多個describe
每個describe中可以包含多個it
每個it中可以包含多個expect,Jasmine還允許describe的巢狀使用。
細節語法,待進一步介紹
後言
前端的單元測試出現的比較晚,在實際的開發中也不是很多見, 但隨著Web技術的發展及前端框架的興起,前後端分離的開發框架逐步使用,對前端的獨立的、完備的質量要求也就會越來越多。Jasmine這個框架本身的應用也不是很普通,但ExtJS的測試工具Sencha Test就是基於這個框架來進行測試的。