1

オブジェクトの単純なjsonリストを取得するかなり単純なコントローラーがあります...

function ProductGroupsCtrl($scope, $http, $routeParams, sharedService, popupService) {

$scope.list = null;
$scope.selectedItem = null;
$scope.selectedItemJsonString = '';

$scope.selectItem = function (item) {
    $scope.selectedItem = item;
    $scope.selectedItemJsonString = JSON.stringify(item);
    //alert(JSON.stringify(item));
};

$scope.closePopup = function () {
    $scope.selectedItem = null;
    $scope.selectedItemJsonString = '';
};

// sharedService.prepForBroadcast($routeParams.anotherVar);

$http({
    method: 'GET',
    url: '/ProductGroup'
}).success(function (data) {
    $scope.list = data;
}).
error(function (data) {
    $scope.message = 'There was an error with the data request.';
});

}

次に、テスト クラスでリクエストをモックしてみます。

var scope, ctrl, $httpBackend, sharedServiceMock = {}, popupServiceMock = {};

beforeEach(inject(function (_$httpBackend_, $rootScope, $controller) {
    $httpBackend = _$httpBackend_;

    $httsypBackend.expectGET('/ProductGroup').
    respond([{
        ProductGroupID: 5,
        MenuTitle: "Promotional Products",
        AlternativeText: "Coming soon - a collection of environmentally friendly Promotional Products",
        OrdinalPosition: 5,
        Active: false
    }]);


    scope = $rootScope.$new();
    ctrl = $controller(ProductGroupsCtrl, {
        $scope: scope,
        $http: $httpBackend,
        sharedService: sharedServiceMock,
        popupService: popupServiceMock
    });}));

しかし、testacular ウィンドウにエラーが表示されますobject undefined。ここで私は何を間違えましたか?

4

1 に答える 1

1

答えを見つけました。$http.get メソッドからエラー コールバック関数を削除すると、機能します。つまり、以下を削除します ...

error(function (data) {
    $scope.message = 'There was an error with the data request.';
}

日々の JavaScript プログラマーではない人にとって、Angular は確かに急な学習曲線であると言わざるを得ません (私はますます多くのことをやっているようですが)。とにかく助けてくれてありがとう KatieK :-)

于 2012-12-04T11:11:03.703 に答える