1

そのため、途中でいくつかの単体テストを作成しようとしながら、このチュートリアルに従おうとしています。

さて、私は ergast 開発者 API への $http リクエストをテストしようとして立ち往生しています。チュートリアルでわかるように、$http リクエストはサービスergastAPIserviceに対して行われます。

angular.module('F1FeederApp.services', []).
factory('ergastAPIservice', function($http) {
    var ergastAPI = {};
    ergastAPI.getDrivers = function() {
        return $http({
            method: 'JSONP',
            url: 'http://ergast.com/api/f1/2013/driverStandings.json?callback=JSON_CALLBACK'
        });
    }
    return ergastAPI;
});


次に、コントローラーで使用されます。

angular.module('F1FeederApp.controllers', []).
controller('driversController', function($scope, ergastAPIservice) {
    $scope.nameFilter = null;
    $scope.driversList = [];
    ergastAPIservice.getDrivers().success(function (response) {
        $scope.driversList = response.MRData.StandingsTable.StandingsLists[0].DriverStandings;
    });
});


これ(サービス)をテストするにはどうすればよいですか。私はこのようなものを始めました:


  describe('F1FeederApp services', function() {
    describe('ergastAPIservice', function(){
        var scope, ctrl, $httpBackend;
        beforeEach(module('F1FeederApp'));
        beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
            scope = $rootScope.$new();
            ctrl = $controller('driversController', {$scope: scope});
            $httpBackend = _$httpBackend_;
            $httpBackend.whenJSONP("
            http://ergast.com/api/f1/2013/driverStandings.json?callback=JSON_CALLBACK").
                respond(WHAT SHOULD GO HERE);
        }));
        it("should get ???", function () {
            $httpBackend.flush();
            expect(WHAT SHOULD GO HERE).toEqual('foo');
        });
    });});


私が言ったように、これを機能させるために、応答に入力したものはすべて、テストで期待するものである必要があり、実際のモックされた $http 要求とは何の関係もないと思いました...または私はこれをすべて間違っている

ヒントや正しい方向への指示は非常に高く評価されます。

乾杯!

4

0 に答える 0