我如何单元测试我的控制器,它在其中使用表单



我试着用jasmine测试下面的代码。我不确定如何伪造/传递角形式的登录功能。任何正确方向上的帮助/指示都会很有帮助。

问候,Sameer

'use strict';
angular.module('myApp')
  .controller('SignupCtrl', function ($scope, Auth, $location) {
    $scope.user = {};
    $scope.errors = {};
    $scope.register = function(form) {
      $scope.submitted = true;
      if(form.$valid) {
        Auth.createUser({
          name: $scope.user.name,
          email: $scope.user.email,
          password: $scope.user.password
        })
        .then( function() {
          // Account created, redirect to home
          $location.path('/');
        })
        .catch( function(err) {
          err = err.data;
          $scope.errors = {};
          // Update validity of form fields that match the mongoose errors
          angular.forEach(err.errors, function(error, field) {
            form[field].$setValidity('mongoose', false);
            $scope.errors[field] = error.message;
          });
        });
      }
    };
  });

要记住,这是注释的解决方案是可以的,因为您不应该需要$setValidity()是否工作。你应该隔离测试你的控制器在函数被触发或返回某个值时是否做了它应该做的事情。JB Nizet应该把他的评论放到一个答案上。

最新更新