So I'm writing a unit test for a method in a service that needs to use a factory defined elsewhere. How do I include a mock factory instead?
As an alternative, I can include the real factory, but catch everything with httpBackend, but I would prefer not to since the factory itself isn't tested.
The service:
"use strict";
rmtg.service('meetingHelper', ['Job', function(Job) {
...
this.getStatus = function (meeting, callback) {
if (!meeting.ReferencedJobs || meeting.ReferencedJobs.length < 1){
callback('Error: No Associated Jobs');
return
} else if (meeting.ReferencedJobs.length == 1){
var job = Job.get(meeting.ReferencedJobs[0]);
console.log(job);
callback('one');
}
};
The tests so far:
describe("meetingHelper service", function(){
beforeEach(module("rmtg"));
var meetingHelper;
beforeEach(inject(function(_meetingHelper_, Job){
meetingHelper = _meetingHelper_;
}));
var mockMeeting = {};
var mockUser = {};
var mockScope = {};
describe('.getStatus', function () {
beforeEach(function() {
mockScope.callback = function () {
};
spyOn(mockScope, 'callback');
});
it('should call the callback function if there are no Referrenced Jobs', function () {
meetingHelper.getStatus(mockMeeting, mockScope.callback);
expect(mockScope.callback).toHaveBeenCalledWith('Error: No Associated Jobs');
});
it('should call the callback function if there is exactly one Referrenced Jobs', function () {
mockMeeting.ReferencedJobs = ["f"];
meetingHelper.getStatus(mockMeeting, mockScope.callback);
expect(mockScope.callback).toHaveBeenCalledWith('one');
});
});
Aucun commentaire:
Enregistrer un commentaire