Ошибка: ожидалось, что неопределенное равно в карме - PullRequest
2 голосов
/ 13 февраля 2020

Файл тестового примера

describe('homeController', function() {
beforeEach(module('moduleInjectionApp'));

var $controller;
var $rootScope;
beforeEach(inject(function(_$controller_, _$rootScope_) {
    $controller = _$controller_('homeController', {'$scope': scope});
    $rootScope = _$rootScope_;
}));

describe('$scope.ID', function() {
    it('Check the scope object', function() {
        var $scope = {};
        expect($scope.ID).toEqual(5);
    });
  });
});

Файл контроллера

 angular.module('moduleInjectionApp').controller('homeController', homeController)
 homeController.$inject = ["$scope", "$rootScope", "$location"];
 function homeController($scope, $rootScope, $location) {
     console.log("entered homeController")
     $scope.ID = 5;
     $rootScope.loginObj = JSON.parse(localStorage.getItem('login_data'));
 }

Ошибка

Error: Expected undefined to equal 5.
        at <Jasmine>
        at UserContext.<anonymous> (WebContent/test/home/homeSpec.js:14:31)
        at <Jasmine>

Chrome 75.0.3770 (Windows 10.0 .0): Выполнено 1 из 1 (1 СБОЙ) (0,036 с / 0,012 с) ИТОГО: 1 СБОЙ, 0 УСПЕХ

1 Ответ

0 голосов
/ 14 февраля 2020

Попробуйте

describe('homeController', function() {
    beforeEach(module('moduleInjectionApp'));

    var $controller;

    beforeEach(inject(function(_$controller_){
              $controller = _$controller_;
    }));

    describe('$scope.ID', function() {
        it('Check the scope object', function() {
            var $scope = {};
            var controller = $controller('homeController', { $scope: $scope });
            expect($scope.ID).toEqual(5);
        });
    });
});

Когда вы объявляете var $scope = {};, вы всегда получите $scope.ID как неопределенное. Вам нужно сделать

var $scope = { ID: 5}

В любом случае, в модульном тесте вы не создаете некоторые значения, а затем expect утверждения на нем. Вы проверяете значения, которые уже определены или были изменены. Здесь вы пытаетесь объявить, а затем положить expect (который всегда будет проходить)

...