jeudi 29 janvier 2015

how to unit test a ngcontroller with external dependencies in jasmine?

I am trying to write a karma unit test for a angularcontroller, this is the controller. Using a fileupload from here (http://ift.tt/1aM2BiP):



var c, di;

c = function($scope, FileUploader, UploadHelper, currentUser) {
var uploader;

$scope.uploader = uploader = new FileUploader(UploadHelper.getOptions());

uploader.onSuccessItem = function(item, response, status, headers) {
//do something
};
return this;
};

di = [ '$scope', 'FileUploader', 'UploadHelper', 'currentUser', c];

angular.module('mycontrollers').controller('DocumentsController', di);


My jasmine test looks like this:



describe('Customer: Controller: DocumentsController', function() {
var $rootScope, DocumentMock, UserMock, documentsController, scope;
documentsController = $rootScope = scope = DocumentMock = UserMock = null;

beforeEach(function() {
module("mycontrollers");
return inject(function($controller, _$rootScope_, $q) {
var deferred, documents, fileUploader, uploadHelper, user;
$rootScope = _$rootScope_;
scope = $rootScope.$new();
documents = [
{
id: "doc 1",
documentType: "other"
}, {
id: "doc 2",
documentType: "pdf"
}, {
id: "doc 3",
v: "pdf"
}
];
user = {
id: 'user_id',
username: 'username'
};
UserMock = {
currentUser: function() {
return user;
}
};
fileUploader = {};
uploadHelper = {};

return documentsController = $controller('DocumentsController', {
documents: documents,
$scope: scope,
FileUploader: fileUploader,
UploadHelper: uploadHelper,
currentUser: UserMock

});
});
});
return describe("On creation", function() {
return it("should assign documents to scope", function() {
return expect(1).toEqual(1);
});
});
});


The problems start on the line with $scope.uploader. I get an error like this:



'DocumentsController not defined'


Question is how I can mock functions like uploaderHelper.getOptions in my test so this unit test will be successful?


Aucun commentaire:

Enregistrer un commentaire