Kurzantwort
Sie müssen nicht um das Ereignis zu feuern. Sie haben Zugriff auf den Bereich, der über die Funktion verfügt, die Sie testen möchten. Dies bedeutet, dass Sie nur die Funktion ausführen und dann bestätigen. Es wird wie folgt aussehen:
it('should call preventDefault on the given event', function(){
var testEvent = $.Event('someEvent');
$scope.f(testEvent);
expect(testEvent.isDefaultPrevented()).toBe(true);
});
Siehe folgende:
Voll Spec
auch - Ihr it
Block sollte b e in Ihrem describe
Block, so dass es Zugriff auf das Feld $scope
hat. Es sollte mehr wie folgt aussehen:
describe('MyController', function(){
'use strict';
var MyController,
$scope;
beforeEach(module('myApp'));
beforeEach($inject(function($rootScope, $controller){
$scope = $rootScope.$new();
MyController = $controller('MyController', {
$scope: $scope
})
}));
it('should call preventDefault on the given event', function(){
var testEvent = $.Event('someEvent');
$scope.f(testEvent);
expect(testEvent.isDefaultPrevented()).toBe(true);
});
})
Hinweis zum Aufbau
Sie Ihre Tests keine Angst, die describe
Blöcke zu verwenden, zu strukturieren. Stellen Sie sich auf die $scope
genannt f2
eine andere Funktion hatte, dann würden Sie wahrscheinlich Spec-Datei auf mehr so partitionieren möchten:
describe('MyController', function(){
'use strict';
var MyController,
$scope;
beforeEach(module('myApp'));
beforeEach($inject(function($rootScope, $controller){
$scope = $rootScope.$new();
MyController = $controller('MyController', {
$scope: $scope
})
}));
describe('$scope', function() {
describe('.f()', function() {
// tests related to only the .f() function
});
describe('.f2()', function() {
// tests related to only the .f2() function
});
});
})
Dies den Vorteil hat, dass, wenn ein Test fehlschlägt, können Sie die Fehlermeldung konstruiert basierend auf der Hierarchie von describe
Blöcke. So wäre es so etwas wie:
MyController $ Rahmen .f() prevent auf dem gegebenen Ereignis nennen sollte
Könnten Sie etwas mehr Kontextinformationen zur Verfügung stellen? –
@EvanBechtol sorry, ich hoffe jetzt ist es klarer – rossoneri