#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();
}
})();