Ember.js

ember.js で JavaScript ユニットテストと統合テストを実行するには、以下の手順に従ってください

  1. Karma をインストール

  2. QUnit プラグインをインストール

    npm install karma-qunit --save-dev
    
  3. Ember プリプロセッサープラグインをインストール

    npm install karma-ember-preprocessor --save-dev
    
  4. Karma の設定ファイルを生成

    karma init
    

    注意 - 上記では基本的な設定について説明します。ember.js/qunit および PhantomJS を使用した作業可能なサンプル設定ファイルは次のとおりです

    module.exports = function(config) {
      config.set({
        basePath: 'js',
    
        files: [
          'vendor/jquery/jquery.min.js',
          'vendor/handlebars/handlebars.js',
          'vendor/ember/ember.js',
          'app.js',
          'tests/*.js',
          'templates/*.handlebars'
        ],
    
        browsers: ['PhantomJS'],
        singleRun: true,
        autoWatch: false,
    
        frameworks: ['qunit'],
    
        plugins: [
          'karma-qunit',
          'karma-ember-preprocessor',
          'karma-phantomjs-launcher'
        ],
    
        preprocessors: {
          '**/*.handlebars': 'ember'
        }
      });
    };
    

    注意 - 上記の files セクションには、jQuery/handlebars/ember.js などのすべての依存関係と、本番の ember.js アプリケーションのデプロイと実行に必要な js および handlebars ファイルを含める必要があります

    注意 - Ember アプリケーションのテストでは、Ember アプリケーションの初期化が完了するまで、Karma でテストが実行されないようにすることが重要です。これを実現するには、上記の files セクションに小さなブートストラップファイルを含める必要があります。次に例を示します

    __karma__.loaded = function() {};
    
    App.setupForTesting();
    App.injectTestHelpers();
    
    //this gate/check is required given that standard practice in Ember tests to is to call
    //Ember.reset() in the afterEach/tearDown for each test.  Doing so, causes the application
    //to 're-initialize', resulting in repeated calls to the initialize function below
    var karma_started = false;
    App.initializer({
        name: "run tests",
        initialize: function(container, application) {
            if (!karma_started) {
                karma_started = true;
                __karma__.start();
            }
        }
    });
    
  5. 簡単な QUnit テストを追加

    test('one should equal one', function() {
        equal(1, 1, 'error: one did not equal one');
    });
    
  6. コマンドラインから Karma でテストを実行

    karma start
    

Karma/QUnit/Ember が動作する簡単なユニット/統合テスト済みサンプルアプリは こちら にあります