How to use in a UITest
tagy opened this issue · comments
New Issue Checklist
- [ x] I have tried with the latest version of OHHTTPStubs
- [x ] I have read the README
- [x ] I have read the Using the right Swift Version of
OHHTTPStubs
for your project section - [ x] I have searched in the existing issues
- [x ] I have read the OHHTTPStubs wiki to see if there wasn't a detailed page talking about my issue
Environment
- version of OHHTTPStubs: 9.1.0
- integration method you are using:
- Cocoapods
- Carthage
- submodule
- [ x] other: SPM
- version of the tool you use: Xcode 12.5
Issue Description
I am using OHHTTPStubs in my Units tests without any issue.
For my unit tests target I have my main app selected as the host application.
I have OHHTPStubs added under link with libraries for the unit testing target.
For my UITest target I have my main app selected as the target app.
I have also added OHHTPStubs under link with libraries for the UI testing target.
I am able to import OHHTTPStubs in to my UITest files and can add code to stub out requests. But when I run a UITest the stub blocks are never called.
I do not have OHHTTPStubs added under link with libraries for my main app.
I have seen this guide but not sure if it applies to my issue A tricky case with Application Tests
I think the setup I have is applying the stubs only to my UITesting app, and not the main app.
Any help would be appreciated thanks.
Having the same issue here.
having the same issue here. I'm using Xcode 13
What I have done in my project
- Include OHTTPStubs, and sample JSON in my main bundle.
- To make sure the sample JSON is not pushed to production I use a different target for production and another one for all other builds. hence all the sample JSON are not a part of production build.
- Use environment variable and check for the environment variable if passed then mock the API calls.
- The environment variable check code is under IF Debug compiler flag hence that does not ship to production either.
- Now this environment variable can be passed in the UI test as launch arguments when launching the application in the UI test.
Hope this helps. Let me know for any more info.
Same issue :(
Same issue :(
Can you create a repo for your sample project and share link here. I would love to debug your issue and submit a pr. thanks
What I have done in my project
- Include OHTTPStubs, and sample JSON in my main bundle.
- To make sure the sample JSON is not pushed to production I use a different target for production and another one for all other builds. hence all the sample JSON are not a part of production build.
- Use environment variable and check for the environment variable if passed then mock the API calls.
- The environment variable check code is under IF Debug compiler flag hence that does not ship to production either.
- Now this environment variable can be passed in the UI test as launch arguments when launching the application in the UI test.
Hope this helps. Let me know for any more info.
Hi @kishorepran, so how about my JSON file? All of them put in main bundle? I think it will improve the app's size.
@Wiley-Wan : Please refer to point 2
Same. Couldn't use it with my UITest
Hi @sulaimansust , @Wiley-Wan : Please upload a sample project where this is not working and let me raise a pr with working example.