Ich habe eine AngularJS-Direktive, die eine templateUrldefinierte 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!
expectGETdas Anfragen sendet ... zumindest sofort. In den Dokumenten hat ihr Beispiel mit /auth.pyein $httpBackend.whenvor dem $httpBackend.expectGETund $httpBackend.flushruft auf.
expectGetwird nur geprüft, ob eine Anfrage versucht wurde.
$httpBackendMock zu sagen , dass er die in der Direktive unter angegebene URL tatsächlich verwenden templateUrlund sie abrufen soll. Ich dachte, ich passThroughwü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?