2017-03-20 14 views
1

「EXPORTAS」ではありません。角度の2ユニットテスト:何のディレクティブは、私は、ブートストラップモーダルエクスポートコンポーネント作成した

@Component({ 
    selector: 'app-modal', 
    templateUrl: './modal.component.html', 
    styleUrls: ['./modal.component.scss'], 
    exportAs: 'modal' 
}) 

とし、その後、次のように私はそれを消費する親コンポーネント上:

<app-modal #modalHandler="modal"></app-modal> 

私はNO_ERROR_SCHEMAを使用して親コンポーネントのためのユニットテストを書くとき、問題がある、カルマは、次のエラーで失敗します。

There is no directive with "exportAs" set to "modal" 

これは、私がTestBedの親コンポーネントにモーダルコンポーネントをインポートした後でのみ解決されます。

NO_ERROR_SCHEMAのように見えますが、このエラーは消えません。とにかく、私の両親ユニットテストに子モーダルをインポートせずにこのエラーを回避できますか?

+0

ModalModuleを複数のサブモジュールでインポートしましたか? – Aravind

+0

いいえ、1つだけです。それはどのように問題に関連していますか? –

+0

ユニットテストのすべての依存モジュールでモジュールをモックする必要があります。 – Aravind

答えて

1

It resolves only after i import the modal component to the the parent component in TestBed.

インポートする必要があります。 TestBedでは、親コンポーネントを持つ空のModuleを作成したばかりなので、これを実行すると、親テンプレートもコンパイルして実行しようとします。そこには、だから、modalとしてエクスポートとして定義されたオブジェクトを検索します

<app-modal #modalHandler="modal"></app-modal> 

として反抗されます。

モジュールが空で、app-modalをインポートしないため、親テンプレートを初期化できないためテストケースです。

だから、

import the modal component to the the parent component in TestBed

にこれはテストベッドがどのように働くかである必要があります。コンポーネントを個別にテストする必要があるものをインポートする必要があります。

注:

Generaly我々はスペック金商法自体にテストモジュールを作成するために、次の行を使用します。

TestBed.configureTestingModule({ 
}); 

したがって、親コンポーネントが存在するモジュールは使用していません。むしろ実行時にテストモジュールを作成しています。

+0

ありがとう、ちょうどそこに方法がないと思っています。モーダルは依存関係を持つことがあるので、親コンポーネントの機能をテストする必要はありません... –

関連する問題