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'; }); |
