diff options
| -rw-r--r-- | src/auto/injector.js | 2 | ||||
| -rw-r--r-- | test/auto/injectorSpec.js | 10 | 
2 files changed, 11 insertions, 1 deletions
diff --git a/src/auto/injector.js b/src/auto/injector.js index 482c8861..3676ee59 100644 --- a/src/auto/injector.js +++ b/src/auto/injector.js @@ -759,7 +759,7 @@ function createInjector(modulesToLoad) {        instance = new Constructor();        returnedValue = invoke(Type, instance, locals); -      return isObject(returnedValue) ? returnedValue : instance; +      return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;      }      return { diff --git a/test/auto/injectorSpec.js b/test/auto/injectorSpec.js index 5c186cf1..aea2dee7 100644 --- a/test/auto/injectorSpec.js +++ b/test/auto/injectorSpec.js @@ -788,6 +788,16 @@ describe('injector', function() {      }); +    it('should allow constructor to return a function', function() { +      var fn = function() {}; +      var Class = function() { +        return fn; +      }; + +      expect($injector.instantiate(Class)).toBe(fn); +    }); + +      it('should handle constructor exception', function() {        expect(function() {          $injector.instantiate(function() { throw 'MyError'; });  | 
