2013-05-22 6 views
6

Verilen ve angularjs uygulaması ile:AngularJS için Jasmine'de form testi nasıl geçerli olur?

adında bir formu '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> 

adı 'LoginController',

$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 ... 
} 

nasıl $ scope.login() fonksiyonu ile bir kontrolör $ Scope.LoginForm. $ Geçersiz için Jasmine testi yazıyorum?

Ben bir salt okunur özellik olduğunu bulduk, bu yüzden kurulum için $ kapsamına sahte nesne çalıştı: Her iki alanlar gereklidir çünkü olmamalıdır rağmen

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

yukarıdaki hala geçti doğrulama .

cevap

1

Sen birim testinde true $ geçersiz özelliğini ayarlayabilirsiniz.

$ scope.LoginForm $ geçersiz = true;

+0

Hope Seni yanlış anlayamadım ve doğrulamak için farklı girdileri test etmek istedin ...? :) Eğer öyleyse, e2e testini kontrol etmelisiniz. –