2014-10-02 87 views
0

我是新来的angularjs测试,并且一直在尝试运行这个测试,但是它一次又一次地失败并且出现相同的错误。我在这里查看问题并阅读文档,但没有得到这个错误的原因。角单元测试失败,错误:意外的请求:GET

帮助将不胜感激。提前致谢。

我service.js

'use strict'; 

var services = angular.module('services',['ngResource']) 

services.factory('callAppsList',['$resource',function($resource){ 
    return $resource('/api/apps/:appId', {}, { 
     query: {method:'GET', isArray:false}, 
     get: {method:'GET', isArray:false}, 
    }); 
}]) 

serviceSpec.js

//serviceSpec testing 

describe("Testing service", function() { 

    beforeEach(module('services')); 

    var service, $httpBackend, response; 
    var url = 'http://0.0.0.0:5000/api/apps/a365cc3520c7a70a553e95ee354670264' 


    beforeEach(inject(function(_$httpBackend_, callAppsList) { 
     $httpBackend = _$httpBackend_; 
     res = { msg :'name'}; 

     service = callAppsList; 

    })); 

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

    //tests 

    it("callAppsList should be defined", function() { 
     expect(service).toBeDefined(); 
    }); 


    it('should send a ping and return the response',(function() { 

     res = service.get({appId: 'a365cc3520c7a70a553e95ee354670264'}); 
     $httpBackend.whenGET(url).respond(res); 

     $httpBackend.expectGET(url) 

     $httpBackend.flush(); 
     //expect(res.msg).toEqual('name'); 

    })); 

    }); 

首测(当我如果它被定义通过测试),但下一个失败。

错误:

Error: Unexpected request: GET /api/apps/a365cc3520c7a70a553e95ee354670264 
    Expected GET http://0.0.0.0:5000/api/apps/a365cc3520c7a70a553e95ee354670264 in /home/anurag/anurag/projects/betablide/applunge/glide/static/test/lib/angular-mocks.js (line 1179) 

烧瓶服务器在另一终端中运行。 请让我知道我在这里做错了什么,以及如何进一步处理。

+0

当您将网址更改为'var url ='/ api/apps/a365cc3520c7a70a553e95ee354670264''时会发生什么? – 2014-10-02 17:59:55

+0

是的,那算出来了。通过添加整个地址我不知道我在想什么。 – anurag619 2014-10-06 06:58:09

回答

1

正如在评论中提到的那样,改变了网址。我还更改了spec文件中的新行。希望这可以帮助其他人。

//serviceSpec testing 

describe("Testing service", function() { 

    beforeEach(module('services')); 

    var service, $httpBackend, response; 
    var url = '/api/apps/a365cc3520c7a70a553e95ee354670264' 


    beforeEach(inject(function(_$httpBackend_, callAppsList) { 
     $httpBackend = _$httpBackend_;  
     service = callAppsList; 

    })); 

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

    //tests 

    it("callAppsList should be defined", function() { 
     expect(service).toBeDefined(); 
    }); 


    it('should send a ping and return the response',(function() { 

     res = service.get({appId: 'a365cc3520c7a70a553e95ee354670264'}); 
     $httpBackend.whenGET(url).respond({status: 200}); 
     //explicitly flushes pending requests 
     $httpBackend.flush(); 
     expect(res.status).toEqual(200); 

    })); 

    }); 
+1

嗨,有没有一种方法使$绝对路径使用$资源工作单元测试?我使用绝对路径在我的服务中调用$资源,因为是跨域调用。我试了几天,但结果是相同的“意外的请求:GET”。有没有人成功,我看到这是简单的$ http正常工作,但没有$资源?谢谢! – Webdesigner 2015-06-14 05:55:47