2017-02-17 50 views
0

我正在建設一個以骨幹爲基礎的圖書館。我的庫有一個View類,它是Backbone.View的擴展。它有一個HTML元素作爲它的一個屬性。我在視圖上有一些新的功能,我想用實習生來測試它們。如何測試intern.js中的視圖庫?

問題是,我找不到從實習生本身引用DOM的方法。我可以看到這個工作的唯一方法是打開一個單獨的HTML頁面的遠程URL,並用leadfoot查詢這個DOM。這個方法對於一個網站來說很不錯,因爲你去特定的網頁去測試你的網站,但是我正在嘗試建立一個庫,所以似乎沒有必要爲了測試庫的核心特性而分開頁面。

有沒有一種方法來測試一個視圖庫,而不需要將所有的代碼放在虛擬HTML文件中以使用leadfoot打開?

回答

1

當然,你有幾個選項,它們都涉及編寫單元測試(不是功能測試)。一種是直接使用Intern的client.html在瀏覽器中運行單元測試,另一種是使用WebDriver(intern-runner)在瀏覽器中運行它們。

你的單元測試會加載你想要測試的任何類,實例化它們的一個實例,做出斷言等。由於你的單元測試將在瀏覽器中運行,因此他們將有權訪問DOM。

請注意,您的測試不會加載測試頁面,它們會加載代碼模塊。因此,測試可能看起來像:

define([ 
    'intern!object', 'intern/chai!assert', 'app/View' 
], function (registerSuite, assert, View) { 
    var view; 

    registerSuite({ 
     name: 'app/View', 

     afterEach: function() { 
      // cleanup the view after each test 
      view.remove(); 
      view = null; 
     }, 

     someTest: function() { 
      var view = new View(); 
      // run tests on the view 
     } 
}); 

要使用webdriver的運行測試,在您的實習生配置列出它suites而非functionalSuites,然後在webdriver的模式(intern-runnerintern run -w)運行的實習生。

要(如果使用實習生-CLI intern serve)在瀏覽器客戶端運行測試,開始它在你的項目目錄的靜態服務器,打開瀏覽器,並瀏覽到http://localhost:<port>/node_modules/intern/client.html?config=tests/intern(假設你的測試配置爲tests/intern.js)。

+0

很棒!謝謝! –