Add documentation to testing with mocks
This commit is contained in:
parent
63c237db41
commit
3455f0f23c
|
@ -11,6 +11,20 @@ public class DownloaderFactory {
|
||||||
private final static DownloaderType DEFAULT_DOWNLOADER = DownloaderType.REAL;
|
private final static DownloaderType DEFAULT_DOWNLOADER = DownloaderType.REAL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* <p>
|
||||||
|
* Returns a implementation of a downloader.
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* If the system property "downloader" is set and is one of {@link DownloaderType},
|
||||||
|
* then a downloader of that type is returned.
|
||||||
|
* It can be passed in with gradle by adding the argument -Ddownloader=abcd,
|
||||||
|
* where abcd is one of {@link DownloaderType}
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* Otherwise it falls back to {@link DownloaderFactory#DEFAULT_DOWNLOADER}.
|
||||||
|
* Change this during development on the local machine to use a different downloader.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
* @param path The path to the folder where mocks are saved/retrieved.
|
* @param path The path to the folder where mocks are saved/retrieved.
|
||||||
* Preferably starting with {@link DownloaderFactory#RESOURCE_PATH}
|
* Preferably starting with {@link DownloaderFactory#RESOURCE_PATH}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -14,6 +14,11 @@ import java.util.Map;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Mocks requests by using json files created by {@link RecordingDownloader}
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
class MockDownloader extends Downloader {
|
class MockDownloader extends Downloader {
|
||||||
|
|
||||||
private final String path;
|
private final String path;
|
||||||
|
|
|
@ -16,6 +16,18 @@ import java.nio.file.Paths;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>
|
||||||
|
* Relays requests to {@link DownloaderTestImpl} and saves the request/response pair into a json file.
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* Those files are used by {@link MockDownloader}.
|
||||||
|
* </p>
|
||||||
|
* <p>
|
||||||
|
* The files <b>must</b> be created on the local dev environment
|
||||||
|
* and recreated when the requests made by a test class change.
|
||||||
|
* </p>
|
||||||
|
*/
|
||||||
class RecordingDownloader extends Downloader {
|
class RecordingDownloader extends Downloader {
|
||||||
|
|
||||||
public final static String FILE_NAME_PREFIX = "generated_mock_";
|
public final static String FILE_NAME_PREFIX = "generated_mock_";
|
||||||
|
@ -23,6 +35,11 @@ class RecordingDownloader extends Downloader {
|
||||||
private int index = 0;
|
private int index = 0;
|
||||||
private final String path;
|
private final String path;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the folder described by {@code stringPath} if it does not exists.
|
||||||
|
* Deletes existing files starting with {@link RecordingDownloader#FILE_NAME_PREFIX}.
|
||||||
|
* @param stringPath Path to the folder where the json files will be saved to.
|
||||||
|
*/
|
||||||
public RecordingDownloader(String stringPath) throws IOException {
|
public RecordingDownloader(String stringPath) throws IOException {
|
||||||
this.path = stringPath;
|
this.path = stringPath;
|
||||||
Path path = Paths.get(stringPath);
|
Path path = Paths.get(stringPath);
|
||||||
|
|
Loading…
Reference in New Issue