私は単体テストしようとしているサービスを持っていますが、そのモジュールに対してのみプライベートであるはずのサービスの機能にはアクセスできません。それをテストしてスパイを置くためには、その機能を他のモジュールに公開する必要があります。私はこれがカプセル化の目的を破り、コーディングのノー・ノーであると感じています。AngularJS関数をカプセル化する方法はまだテスト可能です
例えば、これらの4つの関数はヘルパー関数であり、他のモジュールでは使用されていません。 'vm'オブジェクトに置くことは絶対にありません。このオブジェクトは 'this '大会のために。これは、それを他のモジュールに公開して使用します。これいらない。しかし、もし私がしなければ、私のジャスミンテストがそれらにアクセスすることができないので、テストが失敗します。 :
そこで彼らは、ユニットをテストすることができるか、私は公開せずに私のテストからこれらの変数にアクセスすることができる方法があるので、私は私の他のすべてのモジュールにテストしたいすべての機能を公開するためのソリューションですそれらすべてを。
ああ大丈夫だよ、私はユニットテストを誤解した。私は個々の機能を別々に 'ユニット'としてテストしていると思った。 – MatTaNg
ユニットは、テストがアトミックでなければならないことを意味するので、各テストは単一のアスペクトをカバーする必要があります。たとえば、値を設定し、別の外部関数を呼び出す関数がある場合、2つの異なるテストを実装する必要があります – quirimmo