2
我在單元測試中遇到了一個奇怪的問題。 在控制器我有類似如何在我的情況下嘲笑http請求
testFactory.testFunction($scope.id)
.then(function(returnData) {
// do something with the return
})
廠文件
test.testFunction = function(id) {
return $http.get('/api/v.10/book/' + id + '/books');
};
單元測試
var books = {data: {id: 333, name: 'my book'}};
beforeEach(inject(function (_$controller_, _$httpBackend_, _$rootScope_, _testFactory_) {
scope = _$rootScope_.$new();
$httpBackend = _$httpBackend_;
testFactory = _testFactory_;
testCtrl = _$controller_('testCtrl', {
$scope: scope
});
$httpBackend.whenGET('/api/v.10/book/333/books').respond(books);
}));
it('should check if test runs', function() {
testFactory.testFunction(333).then(function(returnData){
console.log(returnData)
})
$httpBackend.flush();
})
出於某種原因,在執行console.log爲 'returnData' 添加 '書'變量到一個對象,並添加標題,狀態...等響應。
例如:
Object{data: Object{data: Object{id: ..., name: ...}},
status: 200, headers: function (name) { ... },
transformResponse: [...],
url: '/api/v.10/book/333/books', statusText: ''}
我只期待
{data: {id: 333, name: 'my book''}}
我的反應。
有人可以幫我解決這個問題嗎?
非常感謝!
'return'是Javascript中的保留字。這可能會導致一些問題,假設您實際使用它作爲您的變量名稱。 –
謝謝,這只是一個不好的返回數據名稱。這是不是在我的真實代碼 – BonJon