2014-12-23 13 views
5

Mam test kątomierza, który wprowadza dane logowania i klika przycisk logowania i chcę sprawdzić wartość zmiennej kątowej.Uzyskiwanie dostępu do elementów/zmiennych JS z Kątomierzem

NG-click dla elementu klikniętego jest doLogin(), która jest zdefiniowana w pliku sterownika jako:

$scope.doLogin = function(){ 
     console.log('login -- todo'); 
     // remember email used 
     localStorageService.add('lastKeyEmail', $scope.data.login.key.email); 
     // todo - make dynamic 
     $scope.authentication.user = true; 
     // set email of logged in user 
     // todo: would need to be done in user service (set user details received from server) 
     Authentication.setEmail($scope.data.login.key.email); 
     // overwrite password in memory 
     $scope.data.login.password = "thispasswordisdeletedsoyoucantreadit"; 
    }; 

Jak używać kątomierz oczekują() o wartości $ scope.authentication.user ?

Odpowiedz

6

Istnieje funkcja o nazwie evaluate, która umożliwia ocenę wyrażeń kątowych danego elementu.

Wybierz element DOM, dla którego chcesz sprawdzić zakres, a następnie zadzwoń do oceny. Jest to przykład w dokumentacji:

http://angular.github.io/protractor/#/api?view=ElementArrayFinder.prototype.evaluate

+0

To jest miłe, ale kiedy to, co oceniam, powinno zwrócić obiekt różnymi metodami, wydaje się, że metody zostały zastąpione pustymi obiektami przez Angular (przypuszczam, że jest to ograniczenie oceny). Czy ktoś wie, czy istnieje sposób na uzyskanie samego obiektu zasięgu? – Andy

4

Za pomocą kątomierza wykonywane są testy end-to-end (tak, jakby użytkownik kliknął w interfejs - przyciski, kotwice - i odczytał, co jest renderowane - co ostatecznie decyduje, aby ostatecznie wyświetlić zdjęcie , aby wyświetlić widok), nie masz dostępu do zmiennych JavaScript zawartych wewnątrz kontrolerów.

Test, o którym mówisz, to test jednostkowy, w którym testujesz tylko funkcję doLogin, wstrzykując obiekt $ scope wypełniony odpowiednimi danymi, a następnie potwierdzasz, że robi dokładnie to, czego oczekiwałeś testując zmienne js.

Chociaż, jeśli $scope.authentication.user modyfikuje widok gdy ustawiony true (jak jeśli wyświetli „Udane Authentication”, a nawet drogę do innego widoku), można stwierdzić z kątomierz, że to zachowanie przeszedł (zaznaczając „Uwierzytelnianie pomyślna "wiadomość w DOM po uruchomieniu loginy) - ale pamiętaj, że to wciąż test e2e.

+7

Teraz powiedz mi, jak będzie koniec-koniec testu, że coś porusza się w prawidłowej pozycji na płótnie po kliknięciu przez użytkownika i ciągnie się na nim? Jedyny sposób, w jaki mogę to sobie wyobrazić, to przyjrzeć się zmiennej pozycji wewnątrz zakresu. Nie zakładaj, że znasz wszystkie niezbędne/ważne przypadki użycia. – Andy

Powiązane problemy