Ich habe eine AngularJS-Direktive, die eine templateUrl
definierte hat. Ich versuche es mit Jasmine zu testen.
Mein Jasmine JavaScript sieht wie folgt aus , gemäß der Empfehlung von dieser :
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');
});
});
});
});
Wenn ich dies in meinem Jasmine-Spezifikationsfehler ausführe, wird der folgende Fehler angezeigt:
TypeError: Object #<Object> has no method 'passThrough'
Ich möchte nur, dass die templateUrl so geladen wird, wie sie ist - ich möchte sie nicht verwenden respond
. Ich glaube, dies hängt möglicherweise damit zusammen, dass ngMock anstelle von ngMockE2E verwendet wird . Wenn dies der Schuldige ist, wie verwende ich letzteres anstelle des ersteren?
Danke im Voraus!
expectGET
das Anfragen sendet ... zumindest sofort. In den Dokumenten hat ihr Beispiel mit /auth.py
ein $httpBackend.when
vor dem $httpBackend.expectGET
und $httpBackend.flush
ruft auf.
expectGet
wird nur geprüft, ob eine Anfrage versucht wurde.
$httpBackend
Mock zu sagen , dass er die in der Direktive unter angegebene URL tatsächlich verwenden templateUrl
und sie abrufen soll. Ich dachte, ich passThrough
würde das tun. Kennen Sie einen anderen Weg, dies zu tun?
.passThrough();
auf diese Weise verwendet, aber aus den Dokumenten haben Sie Folgendes versucht:$httpBackend.expectGET('path/to/template.html'); // do action here $httpBackend.flush();
Ich denke, dies passt besser zu Ihrer Verwendung - Sie möchten die Anfrage nicht abfangen, dhwhenGet()
stattdessen überprüfen, ob sie gesendet wurde, und dann tatsächlich schicken Sie es?