J'ai une directive AngularJS qui a un templateUrl
fichier. J'essaye de le tester unitaire avec Jasmine.
Mon JavaScript Jasmine ressemble à ce qui suit, selon la recommandation de ceci :
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');
});
});
});
});
Lorsque je l'exécute dans mon erreur de spécification Jasmine, j'obtiens l'erreur suivante:
TypeError: Object #<Object> has no method 'passThrough'
Tout ce que je veux, c'est que le templateUrl soit chargé tel quel - je ne veux pas l'utiliser respond
. Je pense que cela peut être lié à l'utilisation de ngMock au lieu de ngMockE2E . Si c'est le coupable, comment utiliser ce dernier au lieu du premier?
Merci d'avance!
expectGET
envoie des demandes ... du moins hors de la boîte. Dans la documentation, leur exemple avec /auth.py
a un $httpBackend.when
avant les appels $httpBackend.expectGET
et $httpBackend.flush
.
expectGet
s'agit simplement de vérifier si une demande a été tentée.
$httpBackend
maquette d'utiliser réellement l'URL fournie dans la directive ci-dessous templateUrl
et d'aller la chercher. Je pensais que passThrough
je ferais ça. Connaissez-vous une autre façon de procéder?
.passThrough();
de cette façon, mais à partir de la documentation, avez-vous essayé quelque chose comme:$httpBackend.expectGET('path/to/template.html'); // do action here $httpBackend.flush();
Je pense que cela correspond mieux à votre utilisation - vous ne voulez pas attraper la demande, c'estwhenGet()
-à- dire , mais vérifiez plutôt qu'elle est envoyée, puis effectivement envoie-le?