python-dependency-injector/tests/unit/wiring/test_no_interference.py

41 lines
757 B
Python

from typing import Any, Iterator
from pytest import fixture
from dependency_injector.containers import DeclarativeContainer
from dependency_injector.providers import Object
from dependency_injector.wiring import Provide, inject
class A:
@inject
def foo(self, value: str = Provide["value"]) -> str:
return "A" + value
class B(A): ...
class C(A):
def foo(self, *args: Any, **kwargs: Any) -> str:
return "C" + super().foo()
class D(B, C): ...
class Container(DeclarativeContainer):
value = Object("X")
@fixture
def container() -> Iterator[Container]:
c = Container()
c.wire(modules=[__name__])
yield c
c.unwire()
def test_preserve_mro(container: Container) -> None:
assert D().foo() == "CAX"