как правильно смоделировать $ location.url (), используя жасмин и карму - PullRequest
0 голосов
/ 25 февраля 2020

В моем фактическом js я пытаюсь получить параметры запроса из URL-адреса следующим образом:

let string = $location.url().split('string=')[1];

и приравнивая его к переменной области действия:

$scope.string = string;
loadAnotherFunction(); // called next

и В качестве теста я написал следующее:

let $rootScope, $compile, $location;
beforeEach(angular.mock.module('module.directives'
, function($provide){
    let url = '/test/url';
    const location = {
        url: jasmine.createSpy('url').and.returnValue(url)
    };
    $provide.value('$location', location);
}));

beforeEach(angular.mock.inject(['$compile', '$location', '$rootScope',
function(_$compile_, _$location_ ,_$rootScope_) {
    $compile = _$compile_;
    $location = _$location_;
    $rootScope = _$rootScope_;
}]));

<!-- another beforeEach which compiles the element & scope and digests and applies scope-->

it('replaces directive correctly', function(){
        expect(element.html()).toContain('div');
});

Но я продолжаю получать

ReferenceError: $ location не определено

, и это не так очень объяснительно, поэтому я не уверен, что проблема здесь. Я полагаю, что я ввел это правильно, и у него есть доступ к нему (потому что это вызвало бы ошибку «unknownLocationProvider <- location»), так в чем может быть проблема? </p>

...