$rootScope.digest lançando 'nenhuma solicitação mais esperada' no teste de unidade de diretiva angular

StackOverflow https://stackoverflow.com//questions/21003221

  •  20-12-2019
  •  | 
  •  

Pergunta

Codifiquei uma diretiva que verifica algumas permissões e exclui um elemento do DOM se as permissões forem KO.

Eu adoraria fazer um teste de unidade, mas ...hem, estou batendo minha cabeça nas paredes para fazer esse teste simples funcionar.

Eu uso $rootScope.digest() para compilar um trecho de HTML.Ao chamar essa função, o angular tenta carregar a página principal do meu aplicativo e recebo o temido erro "nenhuma solicitação é esperada".

Então aqui está o teste:

describe('Unit testing permission-needed', function() {
    var $compile;
    var $rootScope;
    var $httpBackend;

    // Load the myApp module, which contains the directive
    beforeEach(module('app'));

    beforeEach(angular.mock.module('ngMockE2E'));

    beforeEach(inject(function(_$compile_, _$rootScope_, $injector) {
        $compile = _$compile_;
        $rootScope = _$rootScope_;
        $httpBackend = $injector.get('$httpBackend'); // not sur if I can inject it like others services ?
        $httpBackend.whenGET('app/login/login.tpl.html').passThrough(); // this doesn't seem to work

    }));



    it('should replace the element with the appropriate content', function() {



        // Compile a piece of HTML containing the directive
        var element = $compile("<div permission-needed><span>Some content goes here</span></div>")($rootScope);
        $rootScope.$digest(); // BAM => "no more request expected"

        // Do the test here
        // expect(....);
    });
});

Observe que se eu usar .Rest ourder ('Alguns html aqui');Em vez de .passthrough (), ele funciona.

Obrigado.

Foi útil?

Solução

Bem, respondendo a mim mesmo:

usando um $new() rootScope, o teste está passando:

$rootScope = _$rootScope_.$new();

Espero que isso ajude alguém.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top