示例#1
0
def test_provides_correct_implementation():
    with Context(ConcreteComponent):
        c = Context.provide(configuration(BaseDependency))
        assert isinstance(c, BaseDependency)
        assert isinstance(c, ConcreteComponent)
    with Context(AlternativeComponent):
        c = Context.provide(configuration(BaseDependency))
        assert isinstance(c, BaseDependency)
        assert isinstance(c, AlternativeComponent)
示例#2
0
def test_subtype_is_singleton():
    @singleton
    class SomeComponentSingleton(SomeComponent):
        pass

    with Context(SomeComponentSingleton):
        s1 = Context.provide(configuration(SomeComponent))
        s2 = Context.provide(configuration(SomeComponent))
        assert s1 is s2
        s3 = Context.provide(configuration(SomeComponentSingleton))
        assert s1 is s3
示例#3
0
def test_gets_most_specific():
    class ConcreteComponentSub(ConcreteComponent):
        pass

    with Context(ConcreteComponent, ConcreteComponentSub):
        c = Context.provide(configuration(BaseDependency))
        assert isinstance(c, ConcreteComponentSub)
示例#4
0
def test_new_environment_in_thread():
    def test():
        with Context(AlternativeComponent):
            c1 = Context.provide(configuration(BaseDependency))
            assert isinstance(c1, AlternativeComponent)

    with Context(ConcreteComponent):
        threading.Thread(target=test).start()
        c2 = Context.provide(configuration(BaseDependency))
        assert isinstance(c2, ConcreteComponent)
示例#5
0
    def test():
        component = Context.provide(configuration(SomeComponent))
        assert isinstance(component, SomeComponent)

        test()
示例#6
0
def test_provides_concrete_subclass():
    with Context(ConcreteComponent):
        c = Context.provide(configuration(BaseDependency))
        assert isinstance(c, BaseDependency)
        assert isinstance(c, ConcreteComponent)
示例#7
0
def test_provides_concrete_dependency():
    with Context():
        c = Context.provide(configuration(SomeComponent))
        assert isinstance(c, SomeComponent)
示例#8
0
def test_singleton_is_always_same_instance():
    with Context():
        s1 = Context.provide(configuration(SomeSingleton))
        s2 = Context.provide(configuration(SomeSingleton))
        assert s1 is s2
示例#9
0
def test_fails_with_ambiguous_dependencies():
    with Context(ConcreteComponent, AlternativeComponent):
        with pytest.raises(AmbiguousDependencies):
            Context.provide(configuration(BaseDependency))
示例#10
0
 def test():
     with Context(AlternativeComponent):
         c1 = Context.provide(configuration(BaseDependency))
         assert isinstance(c1, AlternativeComponent)