问题
In one angular directive, I have this code:
$('[name=' + formName + ']').bind('submit', function () {
validate();
});
In the beforeEach clause of a Karma test, I have this code:
bootstrapInput = $compile('<form novalidate name="aForm">' +
'<input-field icon="true" for="email">' +
'<div>' +
'<input class="form-control" class="email" name="email" id="email" type="email" ng-model="user.email" required />' +
'</div>' +
'<input-validation for="email" custom-error="custom error" required="Email is required" email="Email must be in valid format"/>' +
'</input-field>' +
'<button type="submit" value="valider" ></button>' +
'</form>')($rootScope);
And in my unit test, I have this code:
it('should launch validation process if form has just been submitted', function(){
bootstrapInput.submit(); //way of doing?
expect(bootstrapInput.children().hasClass('has-error')).toBe(true);
});
But I got the following error:
Some of your tests did a full page reload!
The question is: How to provoke a submit event to process inside a Karma unit test, without making page reload?
回答1:
Same issue but I do a workaround using a click on the submit button.
bootstrapInput.find('input[type="submit"]').click();
expect(bootstrapInput.children().hasClass('has-error')).toBe(true);
Hope someone will find an explication to this.
来源:https://stackoverflow.com/questions/20565968/submitting-a-form-within-karma-process-some-of-your-tests-did-a-full-page-rel