Tengo una directiva AngularJS que tiene una templateUrldefinida. Estoy tratando de probarlo con Jasmine.
Mi JavaScript de Jasmine se parece a lo siguiente, según la recomendación de esto :
describe('module: my.module', function () {
beforeEach(module('my.module'));
describe('my-directive directive', function () {
var scope, $compile;
beforeEach(inject(function (_$rootScope_, _$compile_, $injector) {
scope = _$rootScope_;
$compile = _$compile_;
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET('path/to/template.html').passThrough();
}));
describe('test', function () {
var element;
beforeEach(function () {
element = $compile(
'<my-directive></my-directive>')(scope);
angular.element(document.body).append(element);
});
afterEach(function () {
element.remove();
});
it('test', function () {
expect(element.html()).toBe('asdf');
});
});
});
});
Cuando ejecuto esto en mi error de especificación de Jasmine obtengo el siguiente error:
TypeError: Object #<Object> has no method 'passThrough'
Todo lo que quiero es que la templateUrl se cargue tal cual, no quiero usar respond. Creo que esto puede estar relacionado con él usando ngMock en lugar de ngMockE2E . Si este es el culpable, ¿cómo uso el último en lugar del primero?
¡Gracias por adelantado!
expectGETenvíe solicitudes ... al menos fuera de la caja. En los documentos de su ejemplo con /auth.pytiene una $httpBackend.whenantes de la $httpBackend.expectGETy $httpBackend.flushllamadas.
expectGetsolo está verificando si se intentó una solicitud.
$httpBackendsimulacro que realmente use la URL provista en la directiva debajo templateUrle ir a buscarla. Pensé passThroughque haría esto. ¿Conoces una forma diferente de hacer esto?
.passThrough();de esa manera, pero a partir de la documentación, he intentado algo así como:$httpBackend.expectGET('path/to/template.html'); // do action here $httpBackend.flush();Creo que este se adapte a su uso mejor - no está queriendo atrapar la solicitud, es decirwhenGet(), sino comprobar que se envía, y luego en realidad ¿mándalo?