не удалось получить доступ к $ scope и $ rootscope при успешном вызове http - PullRequest
0 голосов
/ 15 октября 2018

Использование Jasmine и chutzpah не может получить доступ к $ scope и $ rootcope при успешном вызове http.В жасминовом коде var test = $rootScope.langCode обозначается как «неопределенный».Который находится внутри успешного обратного вызова $ http с завода.

Ниже приведен код контроллера, который необходимо протестировать.

 app.controller('catalogCtrl', ['$scope', '$rootScope', '$window', 'catalogService', '$routeParams', '$location', '$timeout', '$filter', function ($scope, $rootScope, $window, catalogService, $routeParams, $location, $timeout, $filter) {

$scope.init = function (callback, params) {

    catalogService.labeldata().then(function successCallback(response) {
        $rootScope.langCode = "test";

    }, function errorCallback(response) {
        console.log(JSON.parse(JSON.stringify(response)));
        $rootScope.langCode = "test1";
    });
};
}]);

Ниже приведена Фабрика, где я выполняюhttp-вызов

app.factory('catalogService', ['$http', function ($http) {
return {
    labeldata: function () {
        return $http({
            method: 'GET',
            url: "/Content/Index/"

        });
    }
}
}]);

Жасминовый код для проверки catalogCtrl

describe('catalogCtrl', function () {
var httpBackend, $rootScope, $scope, createController, authRequestHandler, myservice, $controller, $q;

beforeEach(module('catalogModule'));

beforeEach(function () {
    module('catalogModule');
    inject(function (_$controller_, _$rootScope_, $injector, _$q_) {
        // inject removes the underscores and finds the $controller Provider
        $controller = _$controller_;
        $rootScope = _$rootScope_;
        $scope = _$rootScope_.$new();
        // Injecting Service references and HttpBackend Object :- 
        httpBackend = $injector.get('$httpBackend');
        $q = _$q_;
        myserv = $injector.get('catalogService');

    });
});

it('Catalog Content', function () {
    var $scope = {}; var $rtScope = {};
    // $controller takes an object containing a reference to the $scope
    var controller = $controller('catalogCtrl', { $scope: $scope, $rtScope: $rootScope });
    // the assertion checks the expected result
    var obj = { "COUNTRYCODE": "au", "KEY": "MERCHANDISE", "LANGCODE": "en", "VALUE": "Merchandise" };
    var arr = [obj];
    var returnData = {};
    returnData.data = arr;
    //returnData = arr;

    //httpBackend.expectGET("/Content/Index/").respond(returnData);
    httpBackend.when('GET', "/Content/Index/").respond(returnData);

    var returnedData;
    myserv.labeldata().then(function (returnData) {
        // check that returned result contains
        returnedData = result;
        expect(returnedData).toEqual({ bar: 'foo' });
    });

    $scope.init(); 
    var test = $rootScope.langCode;
});


 });
...