2011-09-13 75 views
1

我開始一個新項目(Firefox附加組件),我想嘗試使用行爲驅動開發。我特別喜歡Jasmine BDD庫。但是,我無法找到如何在Add-On SDK中使用Jasmine等框架的好方法。在Mozilla Add-On SDK中使用第三方JS庫

一個問題是Jasmine需要在全局對象上指定setTimeout(和類似)函數,而Add-On SDK使用「定時器」模塊導出這些函數。但是讓我們說我調整Jasmine以從「計時器」中獲取這些對象(或者將定時器導出的方法添加到全局對象中)。

更大的問題是我不知道如何實際運行測試。有一個由SDK生成的測試目錄,但是,沒有窗口或文檔對象允許我查看輸出(我真的很希望看到花哨的HTML輸出)。我想我可以創建一個內容腳本來修改頁面,但是我無法訪問(測試)後臺腳本。

你有沒有遇到過這個?有沒有推薦的方法來處理這個問題?

謝謝! 托馬斯

回答

0

可以使用Add-on SDK windows API打開一個新的窗口中運行測試。您應該能夠與subscript loader,並設置窗口和文檔到任何你想要的知識範圍來加載茉莉花腳本(S)該標:

var windows = require("windows").browserWindows; 

windows.open({ 
    url: "about:blank", 
    onOpen: function(window) { 
    var script; 
     var scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"]. 
     getService(Ci.mozIJSSubScriptLoader); 
     scriptLoader.loadSubScript(subscriptSpec, script); 
     script["window"] = window; 
     script["document"] = window.document; 
     // ... run your tests here by calling script.someFunc() ... 
    } 
}); 

更新:進一步的研究表明,browserWindows實際上是特殊的包裝不給你訪問內容窗口。您可以嘗試從hidden frame獲取窗口/文檔。這是我可以看到從特權代碼訪問HTML文檔的唯一途徑。