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