У меня есть директива AngularJS с templateUrl
определенным файлом. Я пытаюсь провести модульное тестирование с помощью Jasmine.
Мой жасмин JavaScript выглядит следующим образом , в соответствии с рекомендацией этого :
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');
});
});
});
});
Когда я запускаю это в своей ошибке спецификации Jasmine, я получаю следующую ошибку:
TypeError: Object #<Object> has no method 'passThrough'
Все, что я хочу, - это загружать templateUrl как есть - я не хочу использовать respond
. Я считаю, что это может быть связано с использованием ngMock вместо ngMockE2E . Если это виноват, как мне использовать последнее вместо первого?
Заранее спасибо!
expectGET
отправляет запросы ... по крайней мере, из коробки. В документации/auth.py
приводится их пример с $httpBackend.when
префиксом $httpBackend.expectGET
и $httpBackend.flush
вызовами.
expectGet
просто проверяется, была ли попытка запроса.
$httpBackend
макету, чтобы он действительно использовал URL-адрес, указанный в директиве, templateUrl
и получил его. Думал passThrough
сделаю это. Вы знаете другой способ сделать это?
.passThrough();
таким образом, но, судя по документации, вы пробовали что-то вроде:$httpBackend.expectGET('path/to/template.html'); // do action here $httpBackend.flush();
Я думаю, что это лучше подходит для вашего использования - вы не хотите перехватывать запрос, т.е.whenGet()
вместо этого проверять, что он отправлен, а затем на самом деле Отправь это?