У мене є директива AngularJS, яка має templateUrl
визначене. Я намагаюсь перевірити це на Жасмін.
Мій Жасмін 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'
Все, що я хочу, - це те, щоб шаблонUrl був завантажений таким, який є - я не хочу використовувати 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()
, а натомість перевірити, чи надсилається він, а потім насправді відправити?