2016-04-14 11 views
2

角度単位テストでは相対的に弱いですが、私は単純な単位テストとして私に打撃を与えるために強く苦労しています。

私のクラス

class CampaignController { 
    constructor($state) { 
     this.$state = $state; 
    } 

    submit() { 
     this.$state.transitionTo('some.state'); 
    } 
} 
export { CampaignController }; 

私のテスト私は私がここで行方不明です何このエラー

Error: [$injector:unpr] Unknown provider: $stateProvider <- $state 

を取得し終わる

import { expect } from 'chai'; 
import angular from 'angular'; 
import { CampaignController } from './campaign.controller'; 

let component; 

describe('campaign-controller', function() { 

    var $state; 

    beforeEach(inject(function (_$state_) { 
     $state = _$state_; 
     component = new CampaignController($state); 
    })); 


    it('should update state on submit',() => { 
     component.submit(); 
     expect($state.current.name).to.be('some.state'); 
    }); 
}); 

答えて

2

あなたはbeforeEachにモジュールをロードしていないので、angular-uiルータは利用できません。最低でも、ui.routerモジュールをロードする必要があります。

たとえば、あなたがあなたの前に、別beforeEachブロックがある可能性があります:

beforeEach(module('ui.router')); 

beforeEach(inject(function (_$state_) { 
    $state = _$state_; 
    component = new CampaignController($state); 
})); 
+1

同様の問題がここに報告されました。http://stackoverflow.com/questions/28737371/error-injectorunpr-unknown-provider-状態提供者状態 –

関連する問題