Comments (3)
@md-weber what about this approach? I assume that there is some place where the injector is configured and, from my understand, it should be passed explicitly (or accessed as global) from the SubjectClass
.
from unittest import mock
def test_start():
# Given
mocked_controller = mock.Mock(spec=Controller)
mocked_controller.get_project_by.return_value = Project("test_project", "test_owner", [], "0")
mocked_repo = mock.Mock(spec=Repository)
mocked_repo.start_optimization.return_value = ""
def configure(binder):
binder.bind(Controller, to=injector.InstanceProvider(mocked_controller))
binder.bind(Repository, to=injector.InstanceProvider(mocked_repo))
injector = Injector(configure)
subject = SubjectClass(injector=injector)
# When
subject.start_optimization()
# Then
mocked_repo.start_optimization.assert_called_once()
from injector.
Hi,
Replication with_injector
's behaviour should be easy if you really need it but I'd like to understand the issue at hand first. Can you provide a code sample that demonstrates what you're doing? In general I don't think you should need or want to use injector in unit tests but we may be referring to different things using that term.
from injector.
I have a quite similar question to this topic, I work at the moment with the Injector and a Function that I want to test accesses the Injector.get and returns a class and calls a method. Now I would like to overwrite this method that it returns something that I want to set up in the first place.
def test_start(self):
subject = SubjectClass();
Injector().get(Controller).get_project_by = Mock(
return_value=Project("test_project", "test_owner", [], "0"))
Injector().get(Repository).start_optimization = Mock(return_value="")
subject.start_optimization() -> calls inside the Injector of Repository
# The problems happens here
Injector().get(Repository).start_optimization.assert_called_once()
from injector.
Related Issues (20)
- Support pep 604 style for optional types (`Type | None`)
- Bind a provider to multiple interfaces?
- Binding multiple interfaces to same implementation HOT 2
- Singletons for parent/child injectors are order-dependent HOT 9
- Maintainer status? HOT 2
- Potential resource leak HOT 3
- Binding of Annotated types does not work as one would expect HOT 8
- Is it an antipattern to have multiple instances of Injector (because of missing Generics support)? HOT 2
- Testing example in docs is not working. ImportError: cannot import name 'with_injector' from 'injector' HOT 6
- FastAPI support HOT 2
- Injection of two abstract classes and annotation
- Question about the example code and intended use HOT 2
- Differentiating between multiple providers HOT 4
- Providing different instances of the same type in the same module HOT 1
- Issue with ClassAssistedBuilder HOT 4
- Implementation of SessionScope Needed
- [Docs] No declarations of type `Name` and `Description` on Docs injection sample HOT 1
- use specific Injector instance as `inject` decorator HOT 5
- How to handle resources? HOT 4
- `injector.Injector.create_object` on pydantic-settings `BaseSettings` does not without factory function in Injector HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from injector.