我试图对我拥有的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 :(得分: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>
&#13;