Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs if-else语句的单元测试_Angularjs_Unit Testing_Karma Runner_Karma Coverage - Fatal编程技术网

Angularjs if-else语句的单元测试

Angularjs if-else语句的单元测试,angularjs,unit-testing,karma-runner,karma-coverage,Angularjs,Unit Testing,Karma Runner,Karma Coverage,我想对if-else语句执行单元测试,这样代码覆盖的分支部分就可以给出好的结果 Controller.js (function () { "use strict"; angular .module("app.login") .controller("LoginController", LoginController); LoginController.$inject = ["$scope", "$http", "$state", "$r

我想对if-else语句执行单元测试,这样代码覆盖的分支部分就可以给出好的结果

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);
    });

我两个都试过了,但它还不包括if-else分支。谁能指出我在上面的代码中遗漏了什么。谢谢

编写测试用例,如下所示

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');

});
你首先必须观察你想观察的方法,并做出预期