infect.js
infect.js copied to clipboard
Allow for Creation of Child Contexts, with Inheritance
One nice feature to have would be the ability to make contexts that can produce child contexts.
One existing implementation of this idea can be found here: https://github.com/Wolfy87/venturi
The use cases for this feature include:
- setting up overrides for testing
- setting up different contexts for different sections of an application
I'm not sure I understand the benefit here. If I want an override for testing, wouldn't I just run infect.set at the top of my test script and set my stubbed data loader or mock values there?
I was thinking of a scenario like this:
- You start with some existing infect wiring:
infect.set('foo', Foo);
infect.set('bar', Bar);
...
- For one test, you want to override one of the infectables.
describe('my test', function() {
it ('should test foo with a stubbed bar', function() {
var testContext = infect.createChild();
var testContext.set('bar', StubbedBar);
var foo = testContext.get('foo');
})
it ('should test bar with a stubbed foo', function() {
var testContext = infect.createChild();
var testContext.set('foo', StubbedFoo);
var bar = testContext.get('bar');
})
});
If we don't have a test context, then I think we would need to manually reset each stubbed component after each test.
Does that help show what I was thinking?
ok, I know it's a year later, but I found this email in my inbox again and it got me thinking about it. Would the ideal solution just be to have your test suite store a copy of the stubbed infectable objects and then write a small function to "restore" their state to the copies? As I see it, your main issue is that your test may mutate your objects, maybe I'm misunderstanding your issue though.