javascriptMVC教程 — 5.開始使用javascriptMVC–測試Cookbook

來源:互聯網
上載者:User

  javascriptMVC對測試提供了強大的支援,通過使用FuncUnit,可以很容易的建立能在瀏覽器或者自動化啟動並執行功能和單元測試。在上一講中我們使用scaffolded命令,之後系統幫你建立了測試指令碼,這講我們將做下面的事情。

  • 運行單元測試.
  • 理解單元測試.
  • 運行功能測試.
  • 理解功能測試.
  • 測試isTasty功能.

 

  運行單元測試

  FuncUnit使用QUnit對model和基本外掛程式進行測試,你可以在瀏覽器或者Envjs運行測試。

  在瀏覽器中運行

  開啟cookbook/qunit.html頁面,你會看到下面的結果:

  在EnvJs中運行

  EnvJs是Rhino基於javascript的瀏覽器,FuncUnit可以在類比的環境中運行測試。在命令列輸入下面的命令:

js funcunit/run envjs cookbook/qunit.html

  他會在類比的瀏覽器中運行測試。

 

  理解單元測試

  FuncUnit使用QUnit來做斷言,並把他們組織成測試和模組,你可以從QUnit's documentation瞭解到單元測試更多的內容。

  cookbook/qunit.html載入steal,並通過他載入cookbook/test/qunit/qunit.js,qunit.js載入你的測試檔案:

  • cookbook/test/qunit/cookbook_test.js
  • cookbook/test/qunit/recipe_test.js

那些檔案依賴funcunit/qunit檔案的載入,當所有檔案載入完畢之後運行測試。開啟cookbook/test/qunit/recipe_test.js檔案,我們來看他都做了些什麼:

//建立測試test("findAll", function(){  //防止下一個測試回合  stop(2000);  //請求recipes  Cookbook.Models.Recipe.findAll({}, function(recipes){    //判斷recipes是否存在    ok(recipes)    //確定我們至少有一個 recipe    ok(recipes.length)    //確定 recipe 正常    ok(recipes[0].name)    ok(recipes[0].description)    //運行下一個測試回合    start()  });})

 

  運行功能測試

  功能測試用於測試那些和使用者互動的請求,例如測試監聽了click、鍵盤事件的外掛程式。cookbook的功能測試主要測試recipe的建立和展示外掛程式。

  在瀏覽器中運行

  開啟cookbook/funcunit.html頁面,他開啟一個新的頁面進行自動化測試,最後顯示的結果:

 

  在Selenium中運行

  Selenium可以自動載入瀏覽器,他已經整合到FuncUnit中了。在命令視窗運行下面的命令:

> js funcunit\run selenium cookbook\funcunit.html

  如果你遇到什麼問題,就需要到FuncUnit documentation中找答案了。

 

  理解FuncUnit測試

  FuncUnit擴充了QUnit,提供了開啟頁面的功能,我們開啟cookbook/cookbook.html頁面,他的功能類似於qunit.html,但是他加入了funcunit。“$”是jquery的別名,我們來看他實現了什麼功能:

test("create recipes", function(){  //在 name 中輸入Ice  S("[name=name]").type("Ice")  //在 description 中輸入Cold Water  S("[name=description]").type("Cold Water")  //點擊 submit 按鈕  S("[type=submit]").click()  //等待,直到第二個 recipe 出現  S('.recipe:nth-child(2)').exists()  //得到第一個 td 的內容  S('.recipe:nth-child(2) td:first').text(function(text){    //確定他包含 ice    ok(text.match(/Ice/), "Typed Ice");  });})

  FuncUnit執行了很多非同步作業,如:click和keypresses之後執行斷言。FuncUnit的目標就是提供可讀的和線性文法。FuncUnit語句會實際儲存並會非同步執行,有時候會要求在回呼函數中擷取頁面的資料。

 

javascriptMVC教程目錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.