不斷把程式碼貼來貼去的厭煩度終於在 v0.2.x 達到了巔峰。我知道寫了 test 之後,應該可以大大改善這情況,畢竟我不再需要載入真正的 SDK 來確保我所有的功能都可以正常運作(在 test 裡面 mock FB SDK 的 API 就好了),也就可以從來回剪貼程式碼於 Plunker 跟 Sublime Text 的循環中解脫了!
第二章的主題是 “Building and Testing”,building 當然是早就已經熟得不能再熟,不過 testing 我還真的是從來沒寫過… 其實一直以來都知道 AngularJS 是非常推崇 test 這件事的,有許多關於 test 的影片或文章,而大部分的 open source module 也都有寫 test spec。
Angular is written with testability in mind, but it still requires that you do the right thing. We tried to make the right thing easy, but Angular is not magic. If you don’t follow these guidelines you may very well end up with an untestable application.
當年(其實也就是幾個月以前)在製作 extension 某個功能的時候需要呼叫 chrome.tabs API 來拿一些資料再送回去給 content,於是就寫出了像下面這樣的 code:
/* file: content_script.js */
chrome.runtime.postMessage({action:'tabs information'},function(res){/**
* Do something with tabs information
*/});
/* file: background.js */
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){if(request.action ==='tabs information'){// Query all tabs for information
chrome.tabs.query({},function(tabs){var info =[];
tabs.forEach(function(tab){
info.push({
id: tab.id,
title: tab.title,
url: tab.url
});});// Send it back with `sendResponse` functionsendResponse(info);});}});