そのため、途中でいくつかの単体テストを作成しようとしながら、このチュートリアルに従おうとしています。
さて、私は 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 要求とは何の関係もないと思いました...または私はこれをすべて間違っている
ヒントや正しい方向への指示は非常に高く評価されます。
乾杯!