$ raotscope.digest lanzando 'no más solicitudes esperadas' en la prueba de la unidad de directiva angular

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

  •  20-12-2019
  •  | 
  •  

Pregunta

He codificado una directiva que comprueba algunos permisos y elimina un elemento de la DOM si los permisos son ko.

Me encantaría probarlo, pero ... Doblad, estoy golpeando la cabeza nuevamente las paredes para hacer este simple trabajo de prueba.

Yo uso $ raotscope.digest () para compilar una pieza de HTML.Al llamar a esta función, Angular intenta cargar la página principal de mi aplicación y obtengo el temido error "No más de la Solicitud".

Así que aquí está la prueba:

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(....);
    });
});

nota de que si uso . responde ('algunos html aquí'); en vez de .passthrough () funciona.

gracias.

¿Fue útil?

Solución

Bueno, respondiendo a mí mismo:

Uso de una nueva () TOUSCOPE, la prueba está pasando:

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

Espero que esto ayude a alguien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top