2016-06-24 7 views
3

ジャスミンを使用してコンポーネントの角度を1.5.6単位でテストしようとしています。しかし、私は以下のエラーを受け取り、理由を確かめていません。

例外TypeError:未定義は( 'controller.name' を評価する)オブジェクトではない

成分:

function MainViewerCtrl() { 
    this.$onInit = function(){ 
     console.log('Component main viewer initialized!'); 
    }; 
    this.name = 'Main Component!'; 
} 

angular.module('ks').component('mainViewer', { 
    bindings: { 
     name : '@' 
    }, 
    controller : MainViewerCtrl, 
    templateUrl: "mainViewer.html" 
}); 

スペック:

describe('Component : mainViewer', function(){ 

    beforeEach(angular.mock.module('ks')); 

    describe('with $componentController', function() { 

    var controller, scope; 

    beforeEach(inject(function($rootScope, $componentController){ 

     scope = $rootScope.$new(); 
     controller = $componentController('mainViewer', 
             {$scope:scope}, 
             {name: 'Main Component!'}); 
    })); 

    it('should have my binding bound', function() { 

     expect(controller.name).toBeDefined(); 
     expect(controller.name).toBe('Main Component!'); 
    }); 
}); 

})。

私は間違っていますか?

答えて

-1

$componentControllerの代わりに_$componentController_を注入する必要があります。 確認ページの最後の試験例https://docs.angularjs.org/guide/component

var $componentController; 
beforeEach(inject(function($rootScope, _$componentController_){ 
    scope = $rootScope.$new(); 
    $componentController = _$componentController_; 
    controller = $componentController('mainViewer', 
            {$scope:scope}, 
            {name: 'Main Component!'}); 
})); 
+2

あなたはこれをする必要はありません。 '_ $ componentController_'のアンダースコアは、それを挿入して変数名' $ componentController'を使い切らないようにするための規約です。 $ componentControllerが自分自身で定義されていません。 – gonzofish

1

はPhantomJSずにカルマを実行するようにしてくださいではなく、クロムまたはFirefox上。私はangular.mock.injectとPhantomJSを組み合わせて使用​​すると、inject機能で未定義のパラメータになり、最終的には(私の単体テストのロジックでは必要ない場合でも)テストに失敗することが判明しました。設定されたブラウザからPhantomJSを削除することで、根本的な原因がわからなくても、少なくともテストを続けることができました。

2

あなたは試しましたか?this answerでしたか?それは私がカルマの設定でファイルに追加されませんでした私のアプリ(UI-ルータ、ngResource)でモジュールの依存関係を持っていたが判明したすべての後に

私は$ componentController同様の問題があったが、未定義でした。彼らはロードされていないので、ちょうど正しく動作しませんでした。

+0

どのような依存関係が見つからなかったのですか?私は同じ問題があります:http://stackoverflow.com/questions/41984613/how-to-test-angular-1-6-component-with-injected-service – DonJuwe

関連する問題