ile geçirme İmzam işlevimin neden yasemin testimi geçmediğini anlayamıyorum. Ben $ httpBackend ile ilgili sorunlar angularjs belgelereTestimi, http iletisiyle birlikte jasmine
çok kötü olduğunu düşünüyorum Bu benim kodudur:
.controller('SystemControllerNg',
['sweetAlertService', 'dataExchangeService', function(sweetAlertService, dataExchangeService) {
var self = this;
self.all_products = [];
/*
Get product from database
*/
self.getProductsFromDatabase = function() {
var success = function(response) {
self.all_products = response.data;
};
var error = function(errResponse) {
console.log('Error getting products from database');
};
dataExchangeService.getProducts().then(success, error);
};
/*
End get product
*/
/*
Send product to database
*/
self.sendProductToDatabase = function(type) {
var success = function(response) {
self.getProductsFromDatabase();
};
var error = function(errResponse) {
console.log('Error sending product to database');
};
dataExchangeService.sendProduct({
"owner": 1,
"name": self.product_input,
"type": true,
"size": 0,
//"assign_category": self.categoryName_id
"assign_category": null
}).then(success, error);
};
/*
End send product
*/
/*
Functions RUNNING in the background
*/
self.getProductsFromDatabase();
/*
End functions RUNNING in the background
*/
}])
.factory('dataExchangeService', ['$http', function($http) {
return {
getProducts: function() {
return $http.get('/api/v1/Products/');
},
sendProduct: function(dataObject) {
return $http.post('/api/v1/Products/', dataObject);
}
};
}]);
ve testler kodu:
describe('Testing services in "Aplication" module', function() {
beforeEach(module('Aplication'));
describe('SystemControllerNg controller', function() {
var ctrl, mockBackend;
beforeEach(inject(function($controller, $httpBackend) {
mockBackend = $httpBackend;
ctrl = $controller('SystemControllerNg');
}));
//In this issue everything is ok
it('it should load products from database', function() {
expect(ctrl.all_products).toEqual([]);
var resObj = {
"owner": 1,
"name": "",
"type": true,
"size": 0,
"assign_category": null
};
mockBackend.expectGET('/api/v1/Products/')
.respond([ resObj ]);
mockBackend.flush();
expect(ctrl.all_products).toEqual([ resObj ]);
});
it('it should send product to database', function() {
//expect(ctrl.all_products).toEqual([]);
var dataObject = {
"owner": 1,
"name": "product",
"type": true,
"size": 0,
"assign_category": null
};
//I don't know why can't pass it :|
mockBackend.expectPOST('/api/v1/Products/', dataObject).respond(201, {});
mockBackend.flush();
//expect(ctrl.all_products).toEqual([ dataObject ]);
});
afterEach(function() {
mockBackend.verifyNoOutstandingExpectation();
mockBackend.verifyNoOutstandingRequest();
});
});
});
İlk test expectGET İş büyüktür, ama neden bekliyoruzPOST değil? Neden işe yaramadığını biliyorsan çok minnettar olacağım. peşin
Teşekkür:
Bu benim günlük konsoludur. Burada
1) Teşekkürler, ama daha önce de ctrl.sendProductToDatabase(); 'denedim ve hala işe yaramadı. Bunun en mantıklı çözüm olduğunu biliyorum .. 2) Muhtemelen haklısın ve ben de deneyeceğim, ama benim için bir anlam ifade etmiyor, çünkü eğer bir çözüm olursa o zaman: 'mockBackend.expectGET ('/ api/v1/Ürünler/') yanıt ver ([resObj]); 'ayrıca işe yaramaz mı? –
Sürecine özet döngüsü eklediniz mi? Cevabıma eklediğim şeye benzer bir şey. İlk önce test ayarınızda kapsam değişkenini tanımlamanız gerekir. – MBielski
Yardımcı olmadı, ama ünite testlerinin angulajlarda nasıl çalıştığını yanlış anladım. Yardımın için çok teşekkürler. Bunu doğru yaptığım zaman çözümüme yazacağım –