Angularディレクティブのユニットテストでクリックイベントをトリガーする方法
-
21-12-2019 - |
質問
私はAngular Appを持っています(ASP.NET MVCプロジェクトから実行しています。)
このアプリでは、次のリンク機能との指令があります。
link: function (scope, element, attrs, formCtrl) {
element.bind('click', function (event) {
formCtrl.$setPristine();
});
}
.
このテストを書きました:
var $compile,
$rootScope,
form;
beforeEach(module('points'));
beforeEach(inject(function(_$compile_, _$rootScope_, testHelper){
$compile = _$compile_;
$rootScope = _$rootScope_;
testHelper.expectBaseRoute();
}));
it('Should set form to pristine when clicked', function () {
var scope = $rootScope;
form = $compile('<form name="testForm" unsaved-warning-clear><input name="test" ng-model="value"/></form>')(scope);
scope.value = "abc";
scope.$digest();
scope.testForm.test.$setViewValue('def');
expect(scope.testForm.$pristine).toBe(false);
$(form).trigger('click');
expect(scope.testForm.$pristine).toBe(true);
});
.
Jasmineを使用してブラウザで実行した場合、テストはパスです。
IDE内部のchutzpah
で実行した場合、失敗します。それはclick
イベントを起動することはありません。
私が欠けているものはありますか?
解決
私の場合は、愚かなユーザーエラーの事件でした。
ブラウザから実行されているJasmine Test RunnerファイルはjQueryを持っていたので、角度参照しました。
私のchutzpah.jsonファイルはそれを逆の順序でした。
jQuery基準を引いて作業を開始しました。
所属していません StackOverflow