aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/auto/injector.js2
-rw-r--r--test/auto/injectorSpec.js10
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'; });