angular service unit test
Ok. Let’s talk about javascript real unit-testing…
Say you have a Service:
function MyService() {
this.greet = function(name) {
return 'hello ' + name;
}
};
so, in order to test it you can access it from global scope:
it("test greet()", function() {
var myService = new MyService();
expect(myService.greet('bob')).toBe('hello bob');
});
OK, now let’s take this service, and register it to angular. Now we’d like to test it, using angular’s DI mechanism:
var MyService;
beforeEach(module('MyModule'));
beforeEach(inject(function(_MyService_) {
MyService = _MyService_;
}));
it("test greet()", function() {
expect(MyService.greet('bob')).toBe('hello bob');
});
So what do we have here?
we are using 2 method from ngMock
- we tell angular what is the “namespace” that we will use with module()
- we inject service to our local var with inject()
Note that we don’t need to instansiate it since angular does it for us (services are singletons in angular).