Krótka odpowiedź
Nie trzeba do ognia zdarzenie. Masz dostęp do zakresu, który ma funkcję, którą chcesz przetestować. Oznacza to, że po prostu wykonujesz funkcję, a następnie potwierdzasz. Będzie to wyglądać mniej więcej tak:
it('should call preventDefault on the given event', function(){
var testEvent = $.Event('someEvent');
$scope.f(testEvent);
expect(testEvent.isDefaultPrevented()).toBe(true);
});
zobacz:
pełne wyposażenie
Również - Twój blok it
powinny b e wewnątrz twojego bloku describe
, tak aby miał dostęp do pola $scope
. Powinno to wyglądać mniej więcej tak:
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);
});
})
notatkę o strukturze
Nie bój się korzystać z describe
klocki uporządkować swoje testy. Wyobraź sobie, że miał inną funkcję na $scope
nazywa f2
, wtedy prawdopodobnie chcesz podzielić swoją Spec złożyć się więcej tak:
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
});
});
})
Ma to tę zaletę, że gdy test nie powiedzie się, pojawi się komunikat o błędzie widzisz jest skonstruowany na podstawie hierarchii bloków describe
. Więc byłoby to coś jak:
MyController $ zakres .f() powinna wywołać preventDefault na danym imprezy
mógłbyś podać jakieś bardziej kontekstowe informacje? –
@EvanBechtol przepraszam, mam nadzieję, że teraz jest bardziej zrozumiały – rossoneri