使用$ httpBackend测试角度服务时,我得到了一些意想不到的结果.
当我使用httpBackend.expectGET运行测试时,测试按预期工作.但是,如果我使用whenGET运行完全相同的测试,则测试失败,并显示消息"No pending request to flush".
这是受测试的服务:
.factory('CoverageService', ['$http', function ($http) {
return{
GetCoverageReport: function () {
return $http.get('../../../js-test-reports/coverage/Chrome 43.0.2357%20(Windows%207)/cobertura-coverage.xml');
},
Run Code Online (Sandbox Code Playgroud)
以下是测试:
'use strict';
describe('coverage-manager.js', function () {
describe('CoverageService', function () {
var httpBackend, sut, rootScope;
beforeEach(module('fot'));
describe('GetCoverageReport', function () {
beforeEach(inject(function ($httpBackend, CoverageService, $rootScope) {
httpBackend = $httpBackend;
sut = CoverageService;
rootScope = $rootScope;
}));
it('should return data', function () {
var expectedData = { testData: 'some data' };
var actualData;
httpBackend.expectGET('../../../js-test-reports/coverage/Chrome 43.0.2357%20(Windows%207)/cobertura-coverage.xml').respond(expectedData);
sut.GetCoverageReport()
.success(function (response) { actualData …Run Code Online (Sandbox Code Playgroud)