@Devastor
I ❤❤❤ JAVASCRIPT

Как в Angular тестировать темплейт контроллера при использовании vm?

Допустим есть контроллер, в котором все работает через this
angular
        .module('app')
        .controller('MyCtrl', MyCtrl);

    /* @ngInject */
    function MyCtrl(){
        var vm = this;
        vm.func = function(){
        }
/*
...
*/
    }

Пишу тест:
it('my ctrl', function () {
        var $scope = $rootScope.$new();
        var vm = $controller('MyCtrl',{$scope:$scope});
        /*
        тут через vm можно как угодно тестировать контроллер
       */
    });


А как тестировать темплейт этого контроллера?
Я не могу откомпилировать темплейт с данными, потому что vm это экземпляр $controller, а не $scope,
поэтому нельзя сделать $compile($templateCache.get(pathToTemplate))(vm).
Как в таком случае компилировать темплейт?
  • Вопрос задан
  • 376 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Все просто - не тестируйте контроллеры. У вас там в принципе не должно быть кода который бы вы хотели потестить. Контроллеры как отдельные сущности не имеют шаблонов, вообще. Единственный случай когда это допустимо - контроллеры директивы, тут у нас есть определенные шаблоны. Но опять же, тут мы будем тестить именно директиву.

Вы так же можете потестить контроллер напрямую дергая его методы, что предпочтительнее, так как с controller as синтаксисом мы избавляемся от такой вредной зависимости как $scope.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы