ディレクティブをテストする必要があり、例外をスローする必要があります。ジャスミンで例外がスローされたことをテストするにはどうすればよいですか?
ディレクティブ リンク機能:
link: function() {
if(something) {
throw new TypeError('Error message');
}
}
実際にエラーをキャッチし、テストが成功したことを報告するテストをまだ正常に実装していません。
ディレクティブをテストする必要があり、例外をスローする必要があります。ジャスミンで例外がスローされたことをテストするにはどうすればよいですか?
ディレクティブ リンク機能:
link: function() {
if(something) {
throw new TypeError('Error message');
}
}
実際にエラーをキャッチし、テストが成功したことを報告するテストをまだ正常に実装していません。
これは私がそれを行う方法です:
describe("myDirective", function() {
it("should throw an error", inject(function ($compile, $rootScope) {
function errorFunctionWrapper()
{
$compile(angular.element("<div my-directive></div>"))($rootScope);
}
expect(errorFunctionWrapper).toThrow();
}));
});
編集:これは現在修正されているようです。Angular 1.6.4 でテスト済み。
Angular 1.6 では、$compile
フェーズ中にスローされたエラーをキャッチできませんでした。$exceptionHandler.errors
それほどエレガントではありませんが、配列 ( source )に対してチェックすることはできます。
it('throws an error', function() {
$compile(angular.element('<directive-name></directive-name>'))($rootScope.$new());
expect($exceptionHandler.errors.length).toBeGreaterThan(0);
});
できれば、正確なエラー メッセージを提供してください。
expect($exceptionHandler.errors).toEqual(['first error', 'second error'])