Serviço angular de teste

Está bem. Vamos falar sobre testes de unidade real de javascript …

Digamos que você tenha um serviço:

function MyService() {
this.greet = function(name) {
return 'hello ' + name;
}
};

então, para testá-lo, você pode acessá-lo do escopo global:

it("test greet()", function() {
var myService = new MyService();
expect
(myService.greet('bob')).toBe('hello bob');
});

https://jsfiddle.net/ronapelbaum/4uwetpy5/

OK, agora vamos pegar este serviço e registrá-lo no angular.
Agora gostaríamos de testá-lo, usando o mecanismo DI do angular:

var MyService;

beforeEach
(module('MyModule'));

beforeEach
(inject(function(_MyService_) {
MyService = _MyService_;
}));

it
("test greet()", function() {
expect
(MyService.greet('bob')).toBe('hello bob');
});

https://jsfiddle.net/ronapelbaum/m6Ltvh82/

Então, o que temos aqui?
estamos usando 2 métodos do ngMock :

  1. dizemos ao angular qual é o “namespace” que usaremos com o módulo ()

  2. injetamos serviço em nosso var local com inject ()

Observe que não precisamos instansiá-lo, pois o angular faz isso por nós (serviços são singletons no angular).