2017-10-06 7 views
0

プライベート変数の単体テストを書いてみたい。しかしジャスミンは私にそれを使用させていない。誰かが私にそれをどうやって説明することができますか?プライベート変数を使った角度単位テスト

export class TestComponent implements OnInit { 
    private resolve; 

    public testPrivate() { 
    this.resolve(false); 
    } 
} 

it(
     'should test private variable',() => { 
     component.testPrivate(); 
     expect(component.resolve).toEqual(false); 
}); 

答えて

1
expect(component['resolve']).toEqual(false); 

または

expect((<any>component).resolve).toEqual(false); 
enter code here 

ただし、技術的にあなたがあれば、それはクラスのprivateメンバーだし、唯一のクラス自体内でアクセスするためのものだという理由だけでプライベート変数をテストするべきではありませんあなたは本当にそれをテストしたい、あなたはそれを公開するか、公開するためにgettersetterを作成する必要があります。

そして、ここでテスト全体を書いていない限り、あなたのテストは私にはあまり意味がありません。

原因はthis.resolve(false)です。これは関数なので、それをfalseと等しいとテストしているのはなぜですか?

編集:

あなたはこれを意味しましたか?

public testPrivate() { 
    this.resolve = false; 
} 
+1

または '(コンポーネントとして).resolve' – yurzui

+0

TypeError:this.resolveは関数ではありません。最初のアプローチを試したときにこのエラーが発生しました。 – Ish

+1

もちろん、そうではありません:)あなたはどういう意味ですか? – Milad

関連する問題