Angularjs jasmine错误$httpBackend没有域的意外请求

Angularjs jasmine错误$httpBackend没有域的意外请求,angularjs,jasmine,httpbackend,Angularjs,Jasmine,Httpbackend,我对$httpBackend的jasmine测试将不起作用,除非我添加域名,即 因为这个测试在几个不同的环境中使用,所以我不能使用 如果没有域,我会出现以下错误: 未捕获错误:意外请求:获取 不需要更多的请求 describe('test my service', function () { 'use strict'; var $httpBackend, myService; beforeEach(inject(fu

我对$httpBackend的jasmine测试将不起作用,除非我添加域名,即

因为这个测试在几个不同的环境中使用,所以我不能使用

如果没有域,我会出现以下错误:

未捕获错误:意外请求:获取 不需要更多的请求

    describe('test my service', function () {
        'use strict';

        var $httpBackend,
          myService;

        beforeEach(inject(function (_$injector_, _$httpBackend_) {
            var $injector = _$injector_;
            $httpBackend = _$httpBackend_;

            myService = $injector.get('myService');

            // this works
            //$httpBackend.whenGET('http://localhost:9808/api/mymethod').respond(200, mockData);

            // this throws error
            $httpBackend.whenGET('/api/mymethod').respond(200, mockData);
        }));

    afterEach(function () {
            $httpBackend.verifyNoOutstandingExpectation();
            $httpBackend.verifyNoOutstandingRequest();
        }); 

        it('check service exists and has methods', function () {
            expect(myService).toBeDefined();
            expect(myService.somemethod).toBeDefined();

        $httpBackend.flush();
    });
}); 
我甚至试着将这些行添加到beforeach中

//这也会引发错误

$httpBackend.when('GET','/api/mymethod')。respond(200,mockData)

//即使添加expect,也会在beforeach中抛出错误 $httpBackend.expectGET('/api/mymethod')

关于如何在不使用域名的情况下实现这一点,有什么想法或建议吗

以下是实际发出请求的服务代码:

(function(app) {

    'use strict';
    function MyService(apiService) {
        var returnDataObject = [];

        apiService.getAll().then(function(result) {
            returnDataObject = result.data;
        });

        this.myMethod = function() {
            if(returnDataObject) {
             return returnDataObject;
            }
            else {
            return null;
            }
        };

    }

    app.service('MyService', MyService);
    MyService.$inject = ['APIService'];

})(angular.module('app.mymodule'));

我想您可以使用正则表达式来匹配URL

你可以做:

var method = 'GET';
var url = '/mymethod';
$httpBackend.when(method, new RegExp('\\' + url)).respond(200, mockData);

我想您可以使用正则表达式来匹配URL

你可以做:

var method = 'GET';
var url = '/mymethod';
$httpBackend.when(method, new RegExp('\\' + url)).respond(200, mockData);

好,看了这个帖子之后,

我可以通过将下面的beforeach添加到我的规范文件来解决我的问题。我正在使用angular v1.5.4和angular ui路由器v0.2.18

beforeEach(module(function($urlRouterProvider) {
        $urlRouterProvider.deferIntercept();
    }));

好,看了这个帖子之后,

我可以通过将下面的beforeach添加到我的规范文件来解决我的问题。我正在使用angular v1.5.4和angular ui路由器v0.2.18

beforeEach(module(function($urlRouterProvider) {
        $urlRouterProvider.deferIntercept();
    }));

实际发出请求的代码是什么?实际发出请求的代码是什么?