mercredi 2 mars 2016

Angular factory not available in service unit test

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