AngularJS 지시문이 있습니다. templateUrl
정의 된 . Jasmine으로 단위 테스트를 시도하고 있습니다.
내 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
. 요청이 시도되었는지 확인하는 것입니다.
$httpBackend
, 아래의 지시문에 제공된 URL을 실제로 사용하고 가져 오라고 모의에게 지시 하는 방법이 필요 templateUrl
합니다. 나는 passThrough
이것을 할 것이라고 생각했다 . 이 작업을 수행하는 다른 방법을 알고 있습니까?
.passThrough();
그런 식으로 사용하지 않았지만 문서에서 다음과 같은 것을 시도해 보셨습니까$httpBackend.expectGET('path/to/template.html'); // do action here $httpBackend.flush();
? 이것이 귀하의 사용에 더 적합하다고 생각합니다. 요청을 잡기를 원하지는whenGet()
않지만 대신 전송되었는지 확인한 다음 실제로 보내?