1

нового для углового и модульного тестирования, у меня есть функция в моем контроллере следующим образом:UnitularJS Unit Test: Как написать модульный тест для функции области?

function TermList($scope, $http, $q, $timeout, $modal, uiGridConstants, uiGridGroupingConstants, storedValue, sendEmail, getUser) { 


    $scope.greeting = "hello"; 
    $scope.sum = function sum() { 
     $scope.z = $scope.x + $scope.y; 
    }; 

    $scope.password = ''; 
    $scope.grade = function() { 
     var size = $scope.password.length; 
     if (size > 8) { 
      $scope.strength = 'strong'; 
     } else if (size > 3) { 
      $scope.strength = 'medium'; 
     } else { 
      $scope.strength = 'weak'; 
     } 
    }; 

} 

и мне нужно, чтобы написать блок для выполнения своих функций области видимости, я следующий тест написано:

describe('routerApp', function() { 
    var scope, 
    controller; 
    beforeEach(function() { 
     module('routerApp'); 
    }); 

    describe('TermList', function() { 
     beforeEach(inject(function ($rootScope, $controller) { 
      scope = $rootScope.$new(); 
      controller = $controller('TermList', { 
       '$scope': scope 
      }); 
     })); 

     it('sets the name', function() { 
      expect(scope.greeting).toEqual('hello'); 
     }); 
    }); 
}); 

и я получаю следующее сообщение об ошибке, когда я запускаю мое модульное тестирование:

TypeError: Cannot read property 'greeting' of undefined 
+0

Что делает ваш '.controller («TermList»...' называют выглядеть? Видимо, это не становится строить свою сферу правильно, и это может быть что-то об этом. –

+0

Похоже, вам не хватает много зависимостей. Фактически определена ваша переменная 'controller'?' expect (controller) .toBeDefined(); 'Мое предположение - это не так. Вероятно, вы захотите создать издеваемую реализацию всех зависимостей контроллеров, чтобы определить' controller '.' .controller ('TermList', {$ scope}) 'не является контроллером в вашем проекте. – tehbeardedone

ответ

-1

ваших inject параметры выглядят подозреваемыми; Я не совсем уверен, что они будут что-то вводить.

Если вы хотите сохранить имя параметра, вы можете вместо этого префикс и суффикс каждого параметра с помощью подчеркивания.

beforeEach(inject(function (_$rootScope_, _$controller_) { 
    scope = _$rootScope_.$new(); 
    controller = _$controller_('TermList', { 
     '$scope': scope 
    }); 
})); 
+0

Спасибо за ваш ответ, я все равно получаю ту же ошибку TypeError: Не могу прочитать приветствие свойства undefined :( – user1429595

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