#A - testing $q service

Testing angular controllers with Jasmine

HTML

<script src="http://jasmine.github.io/1.3/lib/jasmine.js"></script>
<script src="http://jasmine.github.io/1.3/lib/jasmine-html.js"></script>
<link rel="stylesheet" href="http://jasmine.github.io/1.3/lib/jasmine.css">
<script src="http://code.angularjs.org/1.2.9/angular.js"></script>
<script src="http://code.angularjs.org/1.2.9/angular-mocks.js"></script>

JavaScript

//--- CODE --------------------------
(function (angular) {
    var app = angular.module('myApp', []);

    app.factory('Person', function ($log) {
        var Person = function (name) {
            this.eat = function (food) {
                $log.info(name + " is eating delicious " + food);
            };
            this.beHungry = function (reason) {
                $log.warn(name + " is hungry because: " + reason);
            }
        };
        return Person;
    });
})(angular);

// ---SPECS-------------------------
describe('myApp', function () {

    var $q
      , $rootScope
      , $log
      , Person;

    beforeEach(function () {
        module('myApp');
    });

    beforeEach(inject(function (_$q_, _$rootScope_, _$log_, _Person_) {
        $q = _$q_;
        $rootScope = _$rootScope_;
        $log = _$log_;
        Person = _Person_;
    }));

    describe('MyCtrl', function () {
        it('should illustrate basic usage of $q', function (done) {
            var defer = $q.defer();
            defer.reject();
            
            let promise = defer.promise.then(()=>{}, (err)=>{return err;});
            promise.then(()=>{}, ()=>{
            console.log("err")
            done();});
            
       
        });

    });
});

// --- Runner -------------------------
(function () {
    var jasmineEnv = jasmine.getEnv();
    jasmineEnv.updateInterval = 1000;

    var htmlReporter = new jasmine.HtmlReporter();

    jasmineEnv.addReporter(htmlReporter);

    jasmineEnv.specFilter = function (spec) {
        return htmlReporter.specFilter(spec);
    };

    var currentWindowOnload = window.onload;

    window.onload = function () {
        if (currentWindowOnload) {
            currentWindowOnload();
        }
        execJasmine();
    };

    function execJasmine() {
        jasmineEnv.execute();
    }

})();