2017-02-17 18 views
0

バックボーンをベースにしたライブラリを構築しています。私のライブラリには、Backbone.Viewの拡張機能であるViewクラスがあります。それはその要素としてHTML要素を持っています。ビュー上に新しい機能がたくさんあり、私はそれらをインターンでテストしたいと思っています。intern.jsでビューライブラリをテストするにはどうすればよいですか?

問題は、インターン自体からDOMを参照する方法が見つからないということです。私がこれが動作するのを見るための唯一の方法は、別個のHTMLページのリモートURLを開き、このDOMをleadfootで照会することです。この方法はサイトをテストするために特定のページに移動するウェブサイトにとってはすばらしいようですが、ライブラリを構築しようとしていますので、ライブラリのコア機能をテストするために別のページを用意する必要はありません。

あなたのコードをすべてダミーのhtmlファイルに入れてleadfootで開くことなく、ビューライブラリをテストする方法はありますか?

答えて

1

もちろん、ユニットテストの作成(機能テストではありません)が含まれています。 1つは、Internのclient.htmlを使用してブラウザでユニットテストを直接実行する方法と、WebDriver(intern-runner)を使用してブラウザで実行する方法です。

ユニットテストでは、テストしようとしているクラスをロードし、インスタンスをインスタンス化したり、アサーションを作成したりします。ユニットテストはブラウザで実行されるため、DOMにアクセスできます。

テストではテストページが読み込まれず、コードモジュールがロードされることに注意してください。 webdriverをモード(intern-runnerまたはintern run -w)でインターンを実行し、suitesではなく、あなたのインターンのconfigにfunctionalSuitesでそれをリスト、webdriverをを使用してテストを実行するには

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 
     } 
}); 

:だからテストは次のようになります。 (インターン-CLIを使用している場合intern serve)、ブラウザを開き、http://localhost:<port>/node_modules/intern/client.html?config=tests/internを参照し、プロジェクトディレクトリに基づいて、静的なサーバを起動し、ブラウザクライアントでテストを実行するには

(テストの設定がtests/intern.jsであると仮定した場合)。

+0

素晴らしい作品です!ありがとう! –

関連する問題