因此,我在尝试创建一些单元测试的同时尝试遵循本教程。
好吧,我一直在尝试测试对 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 请求没有任何关系......或者我我弄错了
任何提示和/或指出我正确的方向将不胜感激,
干杯!