• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • JavaScript的單元測試工具(3)

    發表于:2014-10-27來源:uml.org.cn作者:Elaine.Ye點擊數: 標簽:JavaScript
    QUnit的另一個很重要的特性是,其允許你在某個模塊中的所有測試被執行之前先、或之后再執行一些命令。module()函數把setup()和teardown()回調當成第二參數來

    QUnit的另一個很重要的特性是,其允許你在某個模塊中的所有測試被執行之前先、或之后再執行一些命令。module()函數把setup()和teardown()回調當成第二參數來接收,使用setup()函數來更新清單6,如清單10所示。

    清單10. setup()(qunit/js/test-setup.js)

      module ("Temperature conversion", {  
      setup : function() {  
      this.celsius1 = 20;  
      this.celsius2 = 30;  
      this.fahrenheit1 = 68;  
      this.fahrenheit2 = 86;  
      }  
      });  
      test("conversion to F", function(){  
      var actual1 = convertFromCelsiusToFahrenheit(this.celsius1);  
      equal(actual1, this.fahrenheit1);  
      var actual2 = convertFromCelsiusToFahrenheit(this.celsius2);  
      equal(actual2, this.fahrenheit2);  
      });  
      test("conversion to C", function(){  
      var actual1 = convertFromFahrenheitToCelsius(this.fahrenheit1);  
      equal(actual1, this.celsius1);  
      var actual2 = convertFromFahrenheitToCelsius(this.fahrenheit2); 
      equal(actual2, this.celsius2);  
      }); 

    該例子把用在斷言中的值移到了setup這部分內容中,避免在測試邏輯中使用這些值。

    QUnit 還通過asyncTest()函數來提供異步測試支持,如果你正在使用Asynchronous JavaScript and XML(Ajax)來進行事務處理的話,則這是一個非常有用的功能。在這一上下文中,expect()函數能夠讓你輕松地驗證運行在一個測試中的多個斷言。

    YUI Test:一個獨立的單元測試模塊

    YUI Test,YUI庫(Yahoo!)內部的一個組件,是一個詳盡完整的單元測試框架。若要開始使用YUI Test,你需要:

    1. 把YUI種子導入HTML運行器中,如下.

    <script src="http://yui.yahooapis.com/3.4.1/build/yui/yui-min.js" kesrc="http://yui.yahooapis.com/3.4.1
    /build/yui/yui-min.js">< /script>  

    正如該行代碼所反映的那樣,例子使用的是YUI Test的版本3。

    在測試腳本文件中,實例化YUI函數,載入所需的模塊test和console,如清單11所示。

    清單11. 載入test和console這兩個YUI模塊

      YUI().use("test", "console", function (Y) {  
      // 測試用例放在這里  
      }); 

    test模塊顯然是出于測試目的必需的,console模塊則不是強制要用的,不過該例子會使用它來輸出結果。測試用例會放在回調的內部,使用一個全局的Y實例來作為參數。

    YUI Test使用Y.Test.Case()構造函數來實例化一個新的測試用例,以及使用Y.Test.Suite()構造函數來實例化一個測試套件,測試套件與JUnit相類似,包含了幾個測試用例,你可以使用add()方法來把測試用例添加到測試套件中。

    我們來使用YUI Test重測一下清單5中的源代碼。清單12說明了如何為該測試創建一個套件和一個測試用例。

    清單12. 測試套件和測試用例

      YUI().use("test", "console", function (Y) {  
      var suite = new Y.Test.Suite("Temperature conversion suite"); 
      //add a test case  
       suite.add(new Y.Test.Case({  
       name: "Temperature conversion?  
       ));   
       }); 

    清單12生成了一個名為Temperature conversion suite的套件,以及一個名為Temperature conversion的測試用例?,F在,你可以在對象字面量(object literal)內部編寫測試方法了,該字面量會被作為參數傳遞給Y.Test.Case構造函數,如清單13所示。

    清單13. 填寫了測試方法的測試用例

      suite.add(new Y.Test.Case({  
      name: "Temperature conversion",  
      setUp : function () {  
      this.celsius1 = 20;  
      this.celsius2 = 30;  
      this.fahrenheit1 = 68;  
      this.fahrenheit2 = 86;  
      },  
      testConversionCtoF: function () {  
      Y.Assert.areEqual(this.fahrenheit1,   
      convertFromCelsiusToFahrenheit(this.celsius1));  
      Y.Assert.areEqual(this.fahrenheit2,   
      convertFromCelsiusToFahrenheit(this.celsius2));  
      },  
      testConversionFtoC: function () {  
      Y.Assert.areEqual(this.celsius1,  
      convertFromFahrenheitToCelsius(this.fahrenheit1));  
      Y.Assert.areEqual(this.celsius2,  
      convertFromFahrenheitToCelsius(this.fahrenheit2)); 
      } 
      })); 

    原文轉自:http://www.uml.org.cn/Test/201301152.asp

    ...
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>