Testy w Angularze to temat rzeka i łatwo pominąć pewne fragmenty uznając je za mało ważne by później mocno tego żałować. Gorzej jeśli rozkładamy się na tak bazowej rzeczy że aż później plujemy sobie w brodę. Tutaj trochę usprawiedliwia nas użyty typescript bo gdy IDE podświetla używane typy to nie podejrzewamy, że coś idzie nie tak.
Przykładowy kod:
beforeEach(() => {
angular.mock.inject((_someService_: NameSpace.SomeService) => {
someService = _someService_;
});
});
it('should be true', () => {
// treść testu
});
Nasz _SomeService _jest podświetlony czyli została do niego znaleziona referecja. Uruchamiamy test i wywala się, że nie potrafimy odnaleźć owego serwisu.
Ponieważ realny test był bardziej skomplikowany szukaliśmy błędu w wielu miejscach licząc na coś nietrywialnego. Kiedy jednak wszystko inne sprawdziliśmy zostało nam coś co ominęliśmy, a jest opisane na samym początku tutoriala testów Angulara - wczytanie modułu.
beforeEach(angular.mock.module('NameSpace'));
I kod zaczął przechodzić testy. Ehh…