jeudi 5 février 2015

How to test my http request in my app

I am trying to write units test for my app and I have the following issue


In my controller, I have something like



$scope.test1 = function() {
productFactory.getName()
.then(function(products){
$scope.result = products;
})
}


productFactory



angular.module('myApp').factory('productFactory', function($http) {
var factoryObj = {};
factoryObj.getName = function() {
return http.get(url)
}

return factoryObj
})


In my unit test file



describe('test here', function () {
var testCtrl, scope, httpBackend, mockFactory;

beforeEach(module('myApp', function($provide){
$provide.value('productFactory', mockFactory);
}));

// Initialize the controller and a mock scope
beforeEach(inject(function (_$controller_, _$rootScope_, _$httpBackend_, _productFactory_) {
scope = _$rootScope_.$new();
httpBackend = _$httpBackend_;
mockFactory = _productFactory_;

testCtrl = _$controller_('testCtrl', {
$scope: scope
});

it('should get product name', function() {
scope.test1();
//I am not sure how to test the results
});
}));


When I run karma test, it gives me



TypeError: 'undefined' is not an object (evaluating 'productFactory.getName()')


I am not sure how to test the http result and fix the error. Can anyone help me about it? Thanks a lot!


Aucun commentaire:

Enregistrer un commentaire