2015-07-10 59 views
1

我正在尝试对我有的http请求进行一些单元测试。我发布的数据到第二个参数在我的HTTP POST请求

var data = {} /* some data object */; 
return $http.post(url, data); 

但后来当我的单元测试,我不能检查,如果数据使得它

$httpBackend.expectPOST(cfcmApiPath + 'book/addDocument').respond('IGNORE_ME'); 
var httpPromise = docComponentRestSvc.addDocumentToBook(22063, doc); 
$httpBackend.flush(); 

这将导致一个错误:

Error: Expected POST http://192.168.33.10/mymy/api/book/addDocument with different data 
    EXPECTED: {"eventId":22063,"sequenceIndex":0,"name":"Nombre","type":"FRONT_OUTSIDE_COVER","value":"Que Tal, Amigo?"} 

奇怪的是,当我正常运行它时,调用似乎正在工作。这就是为什么我想看看请求数据有什么问题。但是,我不知道该怎么做。任何建议?

有关进一步的细节和可能相关的是,我有一个'核心'库,我试图实现的地方基本上我想从库中使用http来使用,因为库做了一些转换并将东西保存在缓存中似乎没有从主模块自动拦截。

回答

0

寻找response.data在测试或其他 - 取决于你没有与我们分享的代码。

angular.module('document', []) 
 
.service('docComponentRestSvc', function($http) { 
 
    this.addDocumentToBook = function(data) { 
 
    return $http.post('book/addDocument', data) 
 
    } 
 
}) 
 

 
describe('document component', function() { 
 

 
    var $httpBackend, docComponentRestSvc 
 

 
    beforeEach(module('document')); 
 

 
    beforeEach(inject(function(_$httpBackend_, _docComponentRestSvc_) { 
 
    $httpBackend = _$httpBackend_; 
 
    docComponentRestSvc = _docComponentRestSvc_; 
 
    })); 
 

 

 
    it('POSTs new document', function() { 
 
    var doc = { 
 
    name: 'Nombre' 
 
    }; 
 
    var mockResponse = 'IGNORE_ME'; 
 
    $httpBackend.expectPOST('book/addDocument').respond(mockResponse); 
 
    docComponentRestSvc.addDocumentToBook(22063, doc).then(function(response) { 
 
     expect(response.data).toBe(mockResponse); 
 
    }) 
 
    $httpBackend.flush(); 
 
    }); 
 

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

 
})
<link href="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine.css" rel="stylesheet" /> 
 
<script src="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine-2.0.3-concated.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular-mocks.js"></script>