AngularJS, Unit Testing Custom Provider

On one of my project i ran into the need of testing a custom provider and after a few online search i realized that it was not so trivial so i decided to share the solution i used in case it might help someone.

Where it all started from!

I had a service that eventually was meant to send a request. I managed to stick a default URI for the service
to call but i wanted the user to be able to change that URI if he wanted to do so.

I ended up with a provider that look something like that

myApp.provider('myService', function () {
   var uri = '/my/uri';
   
   this.setUri = function(val) {
      uri = val;
   };

   this.$get = function () {
      return {
         myMethod : function() {
            // do whatever i want with my uri variable
         }
      }
   };
});

How it ended up!

To test the configuration capabilities of my provider, i ended up with the following kind of test

describe('myService', function() {
	var myService;
	
	// Load the module of the 'myService' service
	beforeEach(module('myModule'));
	
	beforeEach(inject(function(_myService_) {
		myService = _myService_;
	}));
	
	it('should...',function(){
		// Up here the uri value used is the default one
	})
});

describe('myService', function() {
	var myService;
	
	// Load the module of the 'myService' service and configure the 'myService' service
	beforeEach(module('myModule', function(myServiceProvider) {
       		myServiceProvider.setUri('/my/new/uri');
	}));
	
	beforeEach(inject(function(_myService_) {
		myService = _myService_;
	}));	

	it('should...',function(){
		// Up here the uri value used is the one defined throught the service provider
	})
	
});

This solution is not perfect as it represents code duplication but what i like is
the clear separation between the default service behavior and the specialized one
as the two are encapsulated in their own describe function.