def test_providerof_is_safe_to_use_with_multiple_injectors(): def configure1(binder): binder.bind(int, to=1) def configure2(binder): binder.bind(int, to=2) injector1 = Injector(configure1) injector2 = Injector(configure2) provider_of = ProviderOf(int) provider1 = injector1.get(provider_of) provider2 = injector2.get(provider_of) assert provider1.get() == 1 assert provider2.get() == 2
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_special_interfaces_work_with_auto_bind_disabled(): class InjectMe(object): pass def configure(binder): binder.bind(InjectMe, to=InstanceProvider(InjectMe())) injector = Injector(configure, auto_bind=False) # This line used to fail with: # Traceback (most recent call last): # File "/projects/injector/injector_test.py", line 1171, # in test_auto_bind_disabled_regressions # injector.get(ProviderOf(InjectMe)) # File "/projects/injector/injector.py", line 687, in get # binding = self.binder.get_binding(None, key) # File "/projects/injector/injector.py", line 459, in get_binding # raise UnsatisfiedRequirement(cls, key) # UnsatisfiedRequirement: unsatisfied requirement on # <injector.ProviderOf object at 0x10ff01550> injector.get(ProviderOf(InjectMe)) # This used to fail with an error similar to the ProviderOf one injector.get(AssistedBuilder(cls=InjectMe))
def configure(binder): binder.bind(ProviderOf(int), to=InstanceProvider(None))