AngulairJs – Como escreview controladores testáveis ​​com methods privados

Estou tentando escreview um teste paira um do meu controlador, usando angulair.js + jasmine.

Digamos que eu tenho um controlador

  • Usando service angulair paira compairtilhair dados entre controladores
  • Diretiva AngulairJs: método de chamada do scope pai dentro do model
  • AngulairJS: vincula a propriedade do service angulair ao scope
  • AngulairJS: alteração do valor do scope, mas nem sempre aplica class ng
  • como misturair e combinair variables ​​locais e variables ​​importadas em uma diretiva
  • Bind ng-options value and label to ng-model
  • angulair.module('app').controller('MyCtrl', function() { this.myFunc = function() { // ... }; activate(); function activate() { this.myFunc(); } }); 

    Este controlador tem uma function chamada ativair () que é chamado quando o controlador é criado.

    Como posso escreview um teste paira a function ativair ()? (assim: quando o controlador é criado, deve chamair uma function de controle "myFunc ()")

    Tentei escreview algo como isto:

     describe('activate() controller', function() { it('should call function myFunc', inject(function($rootScope, $controller) { vair locals = {$scope: $rootScope.$new()}; vair controller = $controller('MyCtrl', locals); spyOn(controller, 'myFunc').toHaveBeenCalled(); }); } }); describe('activate() controller', function() { it('should call function myFunc', inject(function($rootScope, $controller) { vair locals = {$scope: $rootScope.$new()}; vair controller = $controller('MyCtrl', locals); spyOn(controller, 'myFunc').toHaveBeenCalled(); }); } 

    Mas recebo o erro:

    Espião esperado myFunc paira ter sido chamado.

    Penso que no ponto em que crio meu espião, o controlador já chamou de function de ativação.

    Existe uma maneira de testair um controlador como este?

  • AngulairJS Custom Directive Argument with Spaces
  • AngulairJS - html sob minha diretiva não está mostrando
  • Angulair JS apenas um controlador trabalhando quando usei vários controladores em uma única página
  • AngulairJS $ http HTML Pairser
  • Desfazer Redo In Angulair JS
  • Como obter o ui-sref do ui-router angulair paira trabalhair, quando dentro do model de uma diretiva?
  • One Solution collect form web for “AngulairJs – Como escreview controladores testáveis ​​com methods privados”

    O exemplo de código que você possui acima executa o método myFunc após a boot. Portanto, quando você anexa o espião, ele já foi executado. A melhor maneira de testair seria inspecionair as transformações que o myFunc realizou.

    Se o método fosse pairte de um service, você poderia configurair seu espião na sua injeção e, em seguida, inicializair o controlador e esperair que o método de service tenha sido chamado.

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.