3

I am trying to test some AngularJS factories with Jasmine. It works fine for factories that don't have any dependencies. One of my factories uses Angular Material's $mdToast as dependency.

The factory:

(function() {
  'use strict';

  angular
    .module('myModule')
    .factory('ToastFactory', ToastFactory);

  ToastFactory.$inject = ['$mdToast'];

  function ToastFactory($mdToast) {
    var service = {
      showToast1: showToast1,
      showToast2: showToast2
    };

    return service

    function showToast1() {
      return $mdToast.show($mdToast.build({
        templateUrl: 'path'
      }));
    }

    function showToast2() {
      return $mdToast.show($mdToast.build({
        templateUrl: 'path'
      }));
    }
  }
})();

And here is one of the working tests for another factory without dependencies.

describe('myFactory', function() {
  //Injector Service
  var $injector;

  //Set Module
  beforeEach(function() {
    angular.module('myModule');
  });

  //Inject injector service
  beforeEach(inject(function() {
    $injector = angular.injector(['myModule']);
  }));


  describe('SampleTest', function() {
    it('should be true', function() {
      //Arrange
      var factory = $injector.get('myFactory');

      //Act
      var res = factory.testMethod();

      //Assert
      expect(res).toBe(true);
    });
  });
})

I know how to do it for controllers, but not for factories.

0 Answers0