Services are simply JavaScript classes and you can create an instance of them without using angular's inject mechanism to facilitate your dependency injection. Instead you can simply create a new instance of the class yourself while supplying the parameters which are required.

Currently you are creating your service via an inline function:

app.service("SearchService",function($http,$log,configService,$q){...

Instead of that by making a small adjustment which will separate out the declaration of the service from its injection into the angular module. Doing so will allow you to gain access from your test to the service class.

function SearchService($http, configService){... app.service("SearchService", SearchService);

From your test you suite you can prepare your injectables in your beforeEach preprocessor:

describe('configService',function(){ var configService, httpBackend; beforeEach(module('SearchUI')); beforeEach(inject(function($httpBackend){ httpBackend = "$httpBackend"; configService = jasmine.createSpyObj('configService', ['getDefaultSearch']); })); /* helper method that I create to only have one place where the service is created If I add a new param/dependency then I only have to change the construction once */ function createService(){ return new SearchService(httpBackend, configService); } });

The main reason for taking this approach to testing (controlling the dependency injection manually rather than relying on angular's implementation) is to have full control and to truly isolate the item I am trying to test.