2015-11-03 3 views
0

Я хочу выполнить единичный тест в инструкции if else, чтобы раздел ветвления покрытия кода дал хороший результат. Я не понимаю, как именно то, что именно должно быть проверено в код нижеunit test for if else statement angular js

Controller.js

(function() { 
    "use strict"; 

    angular 
     .module("app.login") 
     .controller("LoginController", LoginController); 

    LoginController.$inject = ["$scope", "$http", "$state", "$rootScope", "logger", "$location"]; 

    /** 
    * @ngdoc controller 
    * @name app.login.controller 
    * @memberof app.login 
    * @summary 
    * This is the controller for the login module 
    * 
    * @param {Object} $scope 
    * @param {Object} $http 
    * @param {Object} $state 
    * @param {Object} $rootScope 
    * @param {Function} logger 
    * @constructor 
    */ 
    function LoginController ($scope, $http, $state, $rootScope, logger, $location) { 

     var vm = this; 
     this.cancel = $scope.$dismiss; 

     logger.info("Started LoginController"); 

     /** 
     * login function 
     * 
     * @memberof app.login.controller 
     */ 
     this.login = function() { 
      if ($scope._username == "admin" && $scope._password == "password") { 
       $state.go("main.login.success"); 
      } else { 
       logger.error("Login Unsuccessful"); 
      } 
     }; 

    } 
})(); 

testing.js

describe("LoginController", function() { 
    var $scope; 
    var controller; 
    var logger; 
    var $cookies; 
    var temp; 

    beforeEach(module("app.login")); 

    beforeEach(inject(function ($controller, _$rootScope_, _logger_, _$cookies_) { 
     $scope = _$rootScope_.$new(); 

     controller = $controller("LoginController", { 
      $scope: $scope, 
      logger: _logger_ 

     }); 

     $scope.$digest(); 
    })); 


it("admin should be the username", function() { 
     $scope._username = "admin"; 
     expect($scope._username).toEqual("admin"); 

    }); 


    it("is username is admin", function() { 

     expect(controller.login).toBe(true); 
    }); 

Я попробовал оба, но оно не покрывает если-то еще ветвь еще. Кто-нибудь может указать, что мне не хватает в коде выше. Благодаря!

ответ

0

Напишите свои testcases как написано ниже

it("admin should be the username", function() { 
    $scope._username = "admin"; 
    $scope._password == "password"; 
    spyOn($state, 'go'); 
    controller.login(); 
    expect($state.go).toHaveBeenCalledWith('main.login.success'); 

}); 

it("should log error if username or password is incorrect", function() { 
    $scope._username = "admin"; 
    $scope._password == "tests"; 
    spyOn(logger, 'error'); 
    controller.login(); 
    expect(logger.error).toHaveBeenCalledWith('Login Unsuccessful'); 

}); 

Вы сначала должны шпионить за метод, который вы хотите посмотреть и сделать ожидание.

 Смежные вопросы

  • Нет связанных вопросов^_^