jasmine + angular ex 10
$http
by ronapelbaum
HTML
<script src="https://jasmine.github.io/2.4/lib/jasmine.js"></script>
<script src="https://jasmine.github.io/2.4/lib/jasmine-html.js"></script>
<script src="https://jasmine.github.io/2.4/lib/boot.js"></script>
<link rel="stylesheet" href="https://jasmine.github.io/2.4/lib/jasmine.css">
<script src="https://code.angularjs.org/1.4.9/angular.js"></script>
<script src="https://code.angularjs.org/1.4.9/angular-mocks.js"></script>
JavaScript
//--------------BL------------
(function() {
function MyController($http) {
this.greeting = null;
var that = this;
this.greet = function(greeting) {
return $http.get('/name').success(function(result) {
that.greeting = greeting + ' ' + result;
}).error(function(result, status) {
that.greeting = 'Server Error: ' + status;
});
}
}
angular.module('MyModule', [])
.controller('MyController', ['$http', MyController]);
})();
//--------------specs------------
describe("MyController spec", function() {
var $controller, $httpBackend;
beforeEach(module('MyModule'));
beforeEach(inject(function(_$controller_, _$httpBackend_) {
$controller = _$controller_;
$httpBackend = _$httpBackend_;
}));
it("ctrl.greeting should be 'Hello Bob'", function() {
var ctrl = $controller("MyController");
ctrl.greet('Hello');
expect(ctrl.greeting).toBeNull;
//mock $httpBackend
$httpBackend.whenGET('/name').respond(function(method, url, data, headers) {
return [200, 'Bob'];
});
//we are still pending
expect(ctrl.greeting).toBeNull();
//flush!
$httpBackend.flush();
//now you're talking!
expect(ctrl.greeting).toBe('Hello Bob');
});
it("ctrl.greeting should be 'server error'", function() {
//TODO
});
});