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 :
dizemos ao angular qual é o “namespace” que usaremos com o módulo ()
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).