Comments (4)
I ended up making sure the Networking
instance doesn't deallocate in the tests by retaining the object as follows:
func execute<T>(request: T,
mockProvider: MockProvider<T>? = nil) -> NetworkPromise where T: RequestConvertible {
let networking = Networking<T>(mode: .async, mockProvider: mockProvider)
return networking.request(request).validate().always({ _ in _ = networking })
Thanks for the help!
from malibu.
You could make networking
an instance var in your test and then inject it to APIFetcher
for example.
from malibu.
Sorry, due to oversimplifying the real case got lost :)
Here is a gist containing the actual case.
The execute<T>(request: T) -> NetworkPromise
is required by the protocol, and relied upon by my services.
If I want to test a service, I thus mock the APIClient
in them, and the Networking
instance is configured in the APIMockClient
, since in the real world, it is also responsible for configuring the Networking
's headers and authentication token.
Now, in a real world example this approach works:
func execute<T>(request: T,
mockProvider: MockProvider<T>? = nil) -> NetworkPromise where T: RequestConvertible {
let networking = Networking<T>(mode: .async, mockProvider: mockProvider)
networking.configureHeaders()
networking.configure(token: userManager.accessToken)
return networking.request(request).validate()
So I am a bit confused here, as the exact same approach is used.
from malibu.
When I use Malibu
I usually keep a reference to Networking
class somewhere. In your case it's not easy to find a workaround without changing the code. It would be easier if you had a generic APIMockClient
with networking being an instance var, but it doesn't follow func execute<T>(request: T)
method from APIClientMethods
protocol.
from malibu.
Related Issues (20)
- Unable to change response code when mocking with JSON HOT 1
- validate() does not consider 304 a valid response HOT 1
- ETag still present even after calling Malibu.clearStorage() HOT 11
- Documentation Error for Pre-processing HOT 1
- Reject promise in middleware HOT 5
- Testing multi-request flows and MockProvider HOT 2
- Make `preProcessRequest` return a promise (or give middleware access to the Request) HOT 1
- New pod release? HOT 1
- Idea/suggestion: improve and extend Codable support HOT 1
- cancelAllRequests not working? HOT 3
- Retry with backoff HOT 2
- Proposal: Adding `RequestBehaviour`s to Malibu HOT 7
- Networking class doesn't work HOT 2
- Can't run playground
- Why there is a dependency on a small barely supported library (When)? HOT 1
- Response serialization
- SSL Pinning HOT 1
- Malibu including 'When' in `Malibu.framework/Frameworks` folder HOT 1
- Increased number of errors after updating to 6.3.0+ HOT 5
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 malibu.