def get(self, key, provider): if self.context is None: raise UnsatisfiedRequirement(None, key) try: return self.context[key] except KeyError: provider = InstanceProvider(provider.get(self.injector)) self.context[key] = provider return provider
def test_binder_provider_for_method_with_class_to_specific_subclass(): class A: pass class B(A): pass injector = Injector() binder = injector.binder provider = binder.provider_for(A, B) assert type(provider) is ClassProvider assert isinstance(provider.get(injector), B)
def test_providerof(): counter = [0] def provide_str(): counter[0] += 1 return 'content' def configure(binder): binder.bind(str, to=provide_str) injector = Injector(configure) assert counter[0] == 0 provider = injector.get(ProviderOf[str]) assert counter[0] == 0 assert provider.get() == 'content' assert counter[0] == 1 assert provider.get() == injector.get(str) assert counter[0] == 3
def test_binder_provider_for_method_with_class(): injector = Injector() binder = injector.binder provider = binder.provider_for(int) assert type(provider) is ClassProvider assert provider.get(injector) == 0
def test_binder_provider_for_method_with_instance(): injector = Injector() binder = injector.binder provider = binder.provider_for(int, to=1) assert type(provider) is InstanceProvider assert provider.get(injector) == 1
def test_binder_provider_for_method_with_explicit_provider(): injector = Injector() binder = injector.binder provider = binder.provider_for(int, to=InstanceProvider(1)) assert (type(provider) is InstanceProvider) assert (provider.get(injector) == 1)