Commit 7078319
Changed files (2)
app
infrastructure
__tests__
app/infrastructure/__tests__/container_spec.js
@@ -0,0 +1,19 @@
+import Container from '../container';
+
+describe("Container", () => {
+ let subject = null;
+
+ beforeEach(() => {
+ subject = new Container();
+ });
+
+ describe("#resolve", () => {
+ class Item { }
+
+ it("can resolve an instance", () => {
+ subject.register('eventAggregator', () => { return new Item() })
+
+ expect(subject.resolve('eventAggregator')).toBeInstanceOf(Item);
+ });
+ });
+});
app/infrastructure/container.js
@@ -0,0 +1,13 @@
+export default class Container {
+ constructor() {
+ this.components = {};
+ }
+
+ register(key, factory) {
+ this.components[key] = factory;
+ }
+
+ resolve(key) {
+ return this.components[key]();
+ }
+}