-
Notifications
You must be signed in to change notification settings - Fork 716
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Injecting an object with a .then property which is not a promise resolves to undefined #1570
Comments
Hey @brahms116, I had a look at your issue. Inversify relies on the Promises/A+ standard and tries to apply their resolution algorithm when it detects a thenable. According to the standard resolution procedure, Consider this passing test: import { expect } from "chai";
import { Container, inject, injectable } from "../../src/inversify";
describe("Issue 1570", () => {
it("It should not return injected value as undefined if the value contains a .then property but it is not a promise", () => {
const container = new Container();
interface Injected {
myProperty: string;
then: () => number;
}
@injectable()
class ResolveMe {
constructor(@inject("Injected") public injected: Injected) {}
}
container.bind("Injected").toConstantValue({
myProperty: "myNewProperty",
then: () => 1,
});
const me = container.resolve(ResolveMe);
expect(me.injected).to.eql(1);
});
}); This is the expected behavior when working with I'll close this issue now. If you wish to continue the discussion, feel free to reply me in this issue and I'll reopen it asap. |
When you inject an object with a property of
.then
but its not a promise, it resolves to undefined. This is because when resolving it believes that its apromise
when its notExpected Behavior
This should pass...
Current Behavior
injected
resolves to undefinedPossible Solution
I have linked a PR for a possible approach #1571
The text was updated successfully, but these errors were encountered: