def __init__(self): clear_injectables(RealCar) mocked_car = Mock(wraps=RealCar) mocked_car.print = Mock( side_effect=lambda: print("driving but not for real")) mocked_injectable = Injectable(lambda: mocked_car) register_injectables({mocked_injectable}, RealCar)
def __init__(self): pass clear_injectables(Car) mocked_car = Mock(wraps=Car) mocked_car.forward = Mock(side_effect=lambda: print("driving but not for real")) mocked_injectable = Injectable(lambda: mocked_car) register_injectables({mocked_injectable}, Car)
def mock_car(): clear_injectables("car") mocked_car = Mock(wraps=Car) mocked_car.forward = Mock( side_effect=lambda: print("driving but not for real")) mocked_car_injectable = Injectable(lambda: mocked_car) register_injectables({mocked_car_injectable}, qualifier="car")
def test__register_injectables__with_class_and_default_values(self): # given default_namespace_key = DEFAULT_NAMESPACE namespace = MagicMock(spec=Namespace)() InjectionContainer.NAMESPACES[default_namespace_key] = namespace injectables = [MagicMock(spec=Injectable)(), MagicMock(spec=Injectable)()] klass = MagicMock # when register_injectables(injectables, klass) # then assert all( call.register_injectable(inj, klass, None, False) in namespace.mock_calls for inj in injectables )
def mock_configurator(): clear_injectables(Configurator) mocked_configuration = Mock(wraps=Configurator) configuration = { 'bicycle': { 'speed_limit': '1000', }, 'car': { 'speed_limit': '900' } } mocked_configuration.get_speed_limit = Mock( side_effect=lambda type: configuration.get(type, {}).get( 'speed_limit', '')) mocked_configuration_injectable = Injectable(lambda: mocked_configuration) register_injectables({mocked_configuration_injectable}, Configurator)
def test__register_injectables__with_empty_injection_container(self): # given InjectionContainer.NAMESPACES = {} namespace = MagicMock(spec=Namespace)() InjectionContainer._get_namespace_entry = MagicMock( return_value=namespace) injectables = [ MagicMock(spec=Injectable)(), MagicMock(spec=Injectable)() ] klass = MagicMock qualifier = "TEST" # when register_injectables(injectables, klass, qualifier) # then assert all( call.register_injectable(inj, klass, qualifier, False) in namespace.mock_calls for inj in injectables)
def test__register_injectables__with_explicit_values(self): # given namespace_key = "TEST_NAMESPACE" namespace = MagicMock(spec=Namespace)() InjectionContainer.NAMESPACES[namespace_key] = namespace injectables = [MagicMock(spec=Injectable)(), MagicMock(spec=Injectable)()] klass = MagicMock qualifier = "TEST" # when register_injectables( injectables, klass, qualifier, namespace_key, propagate=True ) # then assert all( call.register_injectable(inj, klass, qualifier, True) in namespace.mock_calls for inj in injectables )
def __init__(self): clear_injectables(RealDep) mocked_dep = Mock(wraps=RealDep) mocked_dep.print = Mock(side_effect=lambda: print("MockedDep")) mocked_injectable = Injectable(lambda: mocked_dep) register_injectables({mocked_injectable}, RealDep)
def test__register_injectables__with_no_class_and_propagate(self): with pytest.raises(ValueError): register_injectables([MagicMock(spec=Injectable)()], qualifier="TEST", propagate=True)
def test__register_injectables__with_no_class_or_qualifier(self): with pytest.raises(ValueError): register_injectables([MagicMock(spec=Injectable)()])
def foo(): mocked_injectable = Injectable(lambda: object()) register_injectables({mocked_injectable}, object) assert inject(object)