1. 程式人生 > >Javascript測試框架Jasmine(三):Setup、Teardown、巢狀describe等

Javascript測試框架Jasmine(三):Setup、Teardown、巢狀describe等

zz from: http://keenwon.com/1206.html

上一篇把Matcher說了說,本來該說自定義Matcher的,但是發現有些七七八八的細節沒講,那就今天先把這些基礎說了。

Setup and Teardown

Setup和Teardown可以幫助Suite執行一些重複的程式碼,Jasmine提供了beforeEach 和afterEach 函式。很顯然,beforeEach 在describe中的任何spec執行之前執行,afterEach在任何spec執行之後執行。具體的邏輯看Demo就一目瞭然了:

  1. describe("Setup和Teardown示例"
    ,function(){
  2. var foo;
  3. beforeEach(function(){
  4. foo =0;
  5. foo +=1;
  6. });
  7. afterEach(function(){
  8. foo =0;
  9. });
  10. it("測試1",function(){
  11. expect(foo).toEqual(1);
  12. });
  13. it("測試2",function(){
  14. expect(foo).toEqual(1);
  15. expect(true).toEqual(true);
  16. });
  17. });

線上演示

前面說過javascript的作用域規則在Jasmine中是適用的,但是這裡可以通過this

 在beforeEachit ,afterEach 中間共享變數。每個spec的this 預設指向空的object。

  1. describe("this用法示例",function(){
  2. beforeEach(function(){
  3. this.foo =0;
  4. });
  5. it("使用this共享狀態",function(){
  6. expect(this.foo).toEqual(0);
  7. this.bar ="test pollution?";
  8. });
  9. it("下個Spec執行前this會被重置為空Object",function(){
  10. expect(this.foo
    ).toEqual(0);
  11. expect(this.bar).toBe(undefined);
  12. });
  13. });

線上演示

巢狀describe

可以巢狀使用describe,形成一個Suite樹,在一個spec執行之前,Jasmine會順序執行這顆樹上的所有beforeEach 。同樣的,執行完spec後,也會順序執行樹上的所有afterEach

  1. describe("測試巢狀describe:level1",function(){
  2. var foo;
  3. beforeEach(function(){
  4. alert('level1:Setup');
  5. });
  6. afterEach(function(){
  7. alert('level1:Teardown');
  8. });
  9. it("level1:測試",function(){
  10. alert('level1:測試');
  11. });
  12. describe("測試巢狀describe:level2",function()

    相關推薦

    Javascript測試框架JasmineSetupTeardowndescribe

    zz from: http://keenwon.com/1206.html 上一篇把Matcher說了說,本來該說自定義Matcher的,但是發現有些七七八八的細節沒講,那就今天先把這些基礎說了。 Setup and Teardown S

    Javascript測試框架JasminejqPaginator測試例項

    zz from:http://keenwon.com/1225.html jqPaginator是我自己寫的一個分頁元件,已經用在了公司的兩個專案上。這次學習Jasmine,首先想到的就是怎麼測試下jqPaginator。 看過jqPaginator專案的都知道,它

    Javascript測試框架Jasmine非同步程式碼測試

    zz from:http://keenwon.com/1223.html 模擬Timeout Jasmine Clock 可以用來測試setTimeout 和setInterval 的回撥操作。它使回撥函式同步執行,當Clock的時間超過timer的時間,回撥函式

    Javascript測試框架Jasmine自定義Matcher

    zz from:http://keenwon.com/1212.html 一個專案常常需要封裝自定義的Matcher來在多個spec中使用,這次講下怎麼寫相容Jasmine的自定義Matcher。 自定義的Matcher從本質上講是一個對比函式,它的函

    Python 各種測試框架簡介nose

    調用 QQ upm href 命令 math 一點 發現 方法 轉載:https://blog.csdn.net/qq_15013233/article/details/52527260 摘要 這裏將從(pythontesting.net)陸續編譯四篇 Python 測試框

    Javascript面向對象非構造函數的繼承

    pro query 遞歸調用 方法 lac .proto 但是 obj 獲得 這個系列的第一部分介紹了"封裝",第二部分介紹了使用構造函數實現"繼承"。 今天是最後一個部分,介紹不使用構造函數實現"繼承"。 一、什麽是"非構造函數"的繼承? 比如,現在有一個對象,叫做"中國

    JavaScript夯實基礎系列this

    瀏覽器 系列 中一 對象屬性 轉化 繼續 存儲 www 能夠 ??在JavaScript中,函數的每次調用都會擁有一個執行上下文,通過this關鍵字指向該上下文。函數中的代碼在函數定義時不會執行,只有在函數被調用時才執行。函數調用的方式有四種:作為函數調用、作為方法調用、作

    Android自動化測試框架開發Instrumentation測試框架

    本篇開始將介紹幾個重量級的測試框架,首先介紹的是Android最早推出的便於進行程式深入的,系統性的單元測試的框架–Instrumentation。 Instrumentation從android2.3甚至更早版本就存在了,很多Android自動化測試框架都是

    Python3+Selenium2完整的自動化測試框架實現自動化測試環境搭建

    添加 在線安裝 自動化 eight str rain 中間 自動打開 發的 1 環境搭建準備 (1) 下載Python3版本的安裝包,直接官網下載即可:Python官網:https://www.python.org/ (2) 下載Python的基礎工具包

    林大媽的JavaScript進階知識HTML5 History API

    HTML5中新增了History API,它用於管理瀏覽器路由跳轉的一個url棧。History是window物件的一部分,它也是一個物件,因此稱它是BOM(類似DOM,Browser Object Model)中的一份子。History物件包含了使用者在瀏覽器端訪問過的所有url。 一、為什麼存在Hist

    介面測試框架實戰| JSON 請求與響應斷言

      關注公眾號,獲取測試開發實戰乾貨合輯。本文節選自霍格沃茲《測試開發實戰進階》課程教學內容。 資料驅動就是通過資料的改變驅動自動化測試的執行,最終引起測試結果的改變。簡單來說,就是引數化在自動化測試中的應用。 測試過程中使用資料驅動的優勢主要體現在以下幾點: 提高程式碼複用率,相同的測

    MySQL效能管理及架構設計SQL查詢優化分庫分表 - 完結篇

    一、SQL查詢優化(重要) 1.1 獲取有效能問題SQL的三種方式 通過使用者反饋獲取存在效能問題的SQL; 通過慢查日誌獲取存在效能問題的SQL; 實時獲取存在效能問題的SQL; 1.1.2 慢查日誌分析工具 相關配置引數: slow

    SpringBoot學習筆記SpringBoot整合MybatisSpringBoot事務管理SpringBoot多資料來源

    SpringBoot整合Mybatis 第一步我們需要在pom.xml裡面引入mybatis相關的jar包 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artif

    Linux裝置驅動模型框架分析——LDDM的實體bus_typedevice和device_driver

    在Linux裝置模型中,Bus(匯流排)是一類特殊的裝置,它是連線處理器和其它裝置之間的通道(channel)。為了方便裝置模型的實現,核心規定,系統中的每個裝置都要連線在一個Bus上,這個Bus可以是一個內部Bus、虛擬Bus或者Platform Bus。 device

    hbase學習教程HBase優化技巧HBase基本命令使用Java API對HBase伺服器進行操作

    HBase優化技巧 1 修改 linux 系統引數 Linux系統最大可開啟檔案數一般預設的引數值是1024,如果你不進行修改併發量上來的時候會出現“Too Many Open Files”的錯誤,導致整個HBase不可執行,你可以用ulimit -n 命令

    flask學習筆記URL傳參URL反轉重定向

    1、URL傳參 對一個固定頁面下傳入url引數。需要給定一個id,並且使用<id>傳參,這樣才能返回一個值。 #-*- coding:utf-8 -*- from flask import Flask app = Flask(__name__) @app.

    webUI自動化測試框架程式碼分層-物件庫層

    前言:做UI自動化,不可避免的要和頁面上的元素打交道,有的童鞋可能會選擇把頁面元素的定位,操作都寫在測試程式碼中,當頁面元素比較少,測試程式碼比較少的情況下還好,但是一旦頁面元素多起來(實際運用中也不太可能少),測試程式碼一多,就難以閱讀和維護了,因為元素定位的程式碼並不能

    .NET Core之單元測試Mock框架Moq的使用

    編寫一個API 新增一個介面 public interface IFoo { bool Ping(string ip); } 介面實現 public class Foo : IFoo { public bool Ping(string ip) { return new

    Pytest測試框架pytest fixture 用法

    xUnit style 結構的 fixture用於初始化測試函式, pytest fixture是對傳統的 xUnit 架構的setup/teardown功能的改進。pytest fixture為測試準備一個良好的測試環境,測試函式使用的每個 fixture通常有一個引數(以 fixture 命名),測試函式

    Javascript高級程序設計》閱讀記錄第五章 上

    面向對象的語言 none 括號 數量 mas ie9 驗證 ive .so   這個系列以往文字地址:   《Javascript高級程序設計》閱讀記錄(一):第二、三章   《Javascript高級程序設計》閱讀記錄(二):第四章   這個系列,我會把閱讀《Jav