jasmine + angular ex 7

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() {

    var LastNameService = function() {
        console.log("LastNameService creation");

        this.getLastName = function(firstName) {
            return "Marley";
        }
    };

    var Greeter = function(dataService) {
        function greet(name) {
            return "Hello " + name + " " + dataService.getLastName(name);
        }
        this.greet = greet;
    };

    angular.module('MyModule', [])
        .service('LastNameService', LastNameService)
        .service('GreeterService', ['LastNameService', Greeter]);
})();

//--------------specs------------
describe("MyController test suite", function() {
    var GreeterService;
    beforeEach(module('MyModule'));

    beforeEach(module(function($provide) {
        var mockService = jasmine.createSpyObj('DS', ['getLastName']);
        mockService.getLastName.and.returnValue('Dylen');
        $provide.value('LastNameService', mockService);
    }));

    beforeEach(inject(function(_GreeterService_) {
        GreeterService = _GreeterService_;
    }));

    it("should greet corretly", function() {
        expect(GreeterService.greet('Bob')).toBe('Hello Bob Dylen');
    });

});