I am writing an API client in php that sends request to an API server to get the details of a person based on his ID on the API server. The API server has a token based authentication and when queried with the correct ID and the token, the details of that person are returned as a JSON response. I am comfortable with the implementation of the class. However, when it comes to unit testing, I have not much idea about what all should be the best test cases that I should write. Unfortunately, I couldn't find any resources on the same. I have written a few test cases that validates the request parameters and the end point to query. Can anyone shed some more light on unit testing API clients?
Unit testing a PHP API client
932 Views Asked by Praveesh At
1
There are 1 best solutions below
Related Questions in PHP
- How to add the dynamic new rows from my registration form in my database?
- Issue in payment form gateway
- How to create a facet for WP gridbuilder that displays both parent and child custom fields?
- Function in anonymous Laravel Blade component
- How to change woocomerce or full wordpress currency with value from USD to AUD
- General questions about creating a custom theme Moodle CMS
- How to add logging to an abstract class in php
- error 500 on IIS FastCGI but no clue despite multiple error loggings activated
- Composer installation fails and reverts ./composer.json and ./composer.lock to original content
- How to isolate PHP apps from each other on a local machine(Windows or Linux)?
- Laravel: Using belongsToMany relationship with MongoDB
- window.location.href redirects but is causing problems on the webpage
- Key provided is shorter than 256 bits, only 64 bits provided
- Laravel's whereBetween method not working with two timestamps
- Implementing UUID as primary key in Laravel intermediate table
Related Questions in API
- Google Sheets API - Append Request not working
- Is there really no product for docs that has these?
- How to show suggested content in response using Azure Cognitive Search?
- error message when closing current position in binance futures, using ccxt library
- How to filter API data in React Native
- I have fetched an API with JS, but the output looks really bad and I don't know how to fix it
- Session is not storing in react and Asp Dot Core Web API
- Apex charts not rendering series value, showing cannot map values of NULL
- Configure IIS to accept API calls only from API Manager, Deny from direct calls
- Problems with API return using the Axios library in NextJS
- How to query by Iteration in pyral?
- Is there a way to have a user enter a url query and have a single function filter a database?
- Cant get value in Vue from data
- Read stories/posts using instagram API
- Need To Make Minor Change To REST API Response
Related Questions in UNIT-TESTING
- Google Truth.assertThat.contains does not behave similar to List.contains
- What's the best way to breakup a large test in pytest
- How to refer to the filepath of test data in test sourcecode?
- How to mock a dynamic endpoint in Apache Camel Spring Boot
- pytest mock failing when mocking function from imported package
- Jest configuration error while running test case in teamcity
- Resolve paths dynamically based on directory where test (or tested files) is located in Jest
- One-time implementation with Jest's mockResolvedValueOnce within test remains from one test to another
- Why can't I mock the decorator of the function?
- Gitlab pipeline stuck with nx cloud issue
- How to create an improperly closed gzip file using python?
- Nest.js service structure for API integration
- uiState not updating in Tests
- Unit Tests not Compiling or Being found without mod tests in main.rs. Is this a requirement or am I missing some configuration?
- Mocking Stream or Reader in Java Junit
Related Questions in PHPUNIT
- CakePHP2-PHP8 - Tests with PHPUnit ^9.5
- JobQueued event not being fired in test Laravel 11
- Laravel 11 PHPUnit tests Passport install
- How can I repair the "Latest compiled component path not found" error when testing my Laravel 10 app?
- phpunit partial mock laravel service with parameters in constructor
- Mocking inherited class where new object is created or how to unsmell my class
- phpunit only mock one method of a class
- Symfony Phpunit keeps using actual class instead of mock
- How does Laravel phpunit test assertion "$this->assertAuthenticatedAs($user, $guard = null)" work?
- Warning: XDEBUG_MODE=coverage or xdebug.mode=coverage has to be set
- Can I debug PHPUnit tests in IntelliJ/PhpStorm from devspace or kubectl?
- PhpStorm | PHPUnit | Feature test | Xdebug | Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
- Running PHPUnit from Eclipse result in 0 % for code coverage
- Kohana - HTTP Tests
- PHPUnit Data Provider error: ArgumentCountError: Too few arguments to function, 0 passed in, and exactly 2 expected
Related Questions in APICLIENT
- Client Factory function implementation in Typescript
- API SERVICE login
- Error in using Fast Android Networking API in project
- How can I mock dataTaskPublisher method from URLSession in Swift Combine?
- How to pass credentials for ApiClient generated by openapi-maven-generator-plugin?
- How do I call a api client generated method with header/body params?
- Create TermsQuery with List<String> using elasticsearch java api client
- Replacement for SearchTemplateRequest class in java api client
- how to set headers that get from client api in Go
- Replacement for SearchSourceBuilder class in java api client
- ES7 Migration :: From Transport Client to API client
- Error when trying to send data from APIClient to a function using multiprocessing
- how to debug and test retry logic of API client in Python
- Django multipart/form-data pass Dict & File
- Restapi sends "invalid api key" message to client side
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I am not a test expert but I do test when creation libs and components, so these are my advices.
Usually when I do similar tasks as you described, I create a library as a facade of the remote API, that ( possibly ) simplifies them.
So I have two distinguished types of tests, "unit test" and "integration test": the former are test for library components to check that they give correct results against different data model passed in input, the latter to check if library call ( eg. "getPersonDetails" that internally makes one or more remote API requests ) gives the correct result.
In your case you may create an "integration test" for your "getPersonDetails" method to check if the remote API ( possibly TEST environment ) gives answer and if your method's response is what you expect. You can also try to pass wrong input data anche check to raise the correct exception etc.
Any internal components that are used within "getPersonDetails" can be tested in "unit test".