2013-05-22 10 views
6

Zważywszy i angularjs aplikacja z:W jaki sposób test jednostkowy dla formularza jest/nie jest prawidłowy w Jasmine dla AngularJS?

formularz o nazwie 'LoginForm'

<div class="well well-large loginForm" ng-controller="LoginController" ng-hide="isAuthenticated"> 
    <form id="loginForm" class="form-signin" name="LoginForm"> 
     <h2 class="form-signin-heading">Please sign in</h2> 
     <input type="text" name="username" ng-model="user.username" required 
      class="input-block-level input-large" placeholder="Username" autocorrect="off" autocapitalize="off" tabindex="1"> 
     <input type="password" name="password" ng-model="user.password" required 
      class="input-block-level input-large" placeholder="Password" tabindex="2"> 
     <p ng-show="error401" class="text-error">Username and/or password was incorrect</p> 
     <p ng-show="error500" class="text-error">Whoops! Something went wrong</p> 
     <button class="btn btn-primary loginButton" ng-click="login(user)" tabindex="3">Sign in</button> 
    </form> 
</div> 

Kontroler nazwie 'LoginController', z funkcją $ scope.login()

$scope.login = function(user) { 
    if ($scope.LoginForm.$invalid) { 
     log('LoginForm is invalid'); 
     return; 
    } else { 
     log('LoginForm is valid'); 
    } 
    // ... snip ... other stuff like actual ajax login ... 
} 

Jak zrobić Piszę test Jasmine dla $ scope.LoginForm. $ Invalid?

znalazłem, że jest to właściwość tylko do odczytu, więc próbowałem skonfigurować makiety obiektu na $ zakresie:

scope.LoginForm = { 
    "user" : { 
     "password": "something" 
    } 
}; 

Powyższy nadal przechodzi walidacji, mimo że nie powinien mieć, bo oba pola są wymagane .

Odpowiedz

1

Można ustawić $ nieprawidłowy właściwość na wartość true w badanej jednostki.

$ scope.LoginForm $ nieważny = true;

+0

Mam nadzieję, że Cię źle zrozumiałem i że naprawdę chcesz przetestować różne dane wejściowe, aby sprawdzić, czy sprawdzają ...? :) Jeśli tak, powinieneś sprawdzić test e2e. –

Powiązane problemy