Sono nuovo per le API e per i mock. Per favore aiutami ..
Ho una serie di API di riposo per le quali ho bisogno di scrivere test unitari. a sua volta l'API a sua volta chiama un altro servizio, riceve la risposta JSON e restituisce la risposta [dati]. Fondamentalmente sta interrogando un elenco di dati anagrafici come utenti, fornitori, paesi ecc.
La mia domanda è: come posso testare questa unità? Qualunque codice di esempio potrebbe aiutarmi ad iniziare?
)
pacchetto mds; / * tutte le importazioni rimosse qui * /
Tieni presente quanto segue, questa url si riferisce al servizio esterno che restituisce i dati alla mia API di riposo sotto test
** // servizio esterno uri dal valore di esempio del file delle proprietà nel file delle proprietà
// link ?
String archesURL = null;**
@Value ( "$ {} mds.arches.address"
@RestController
@RequestMapping ( "/ api")
classe pubblica MasterdataSearchService {
private static final long serialVersionUID = 1L;
private static final String USER_AGENT = "Mozilla/5.0";
private final String[] excludeFields = { "ir_classname", "arches_type" };
public static final String KeyRealm = "realm";
public static final String MDSAdapterId = "app.masterdataservice";
public static final String irClassName = "ir_classname";
public static final String masterdataClassParameter = "System.Base.MasterdataClassList.Register";
static Hashtable<String, String> pathToClassNameMap = new Hashtable<String, String>();
//external service uri from properties file
@Value("${mds.arches.address}")
String archesURL = null;
@Value("#{${mds.ir_class.path}}")
private Map<String, String> irClassNames;
static String searchOptions = "arches.preview=false&sort=score desc,DefaultRelevance desc&wt=json";
static ClientHttpRequestFactory requestFactory;
@Autowired
private ResourceLoader resourceLoader;
@RequestMapping(value = "data/{classObject}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody String getListOfClassObject (@PathVariable("classObject") String classObject,
@RequestParam(value = "fields",required=false) List<String> fields,
@RequestParam(value = "uniquename",required=false) String uniqueName,
@RequestParam(value = "name",required=false) String name,
@RequestParam(value = "rows",required=false) int rows) throws JSONException, Exception
{
//hardcoded for better understanding
String anId = "71000003015" ;
String client= "ups" ;
searchTerms.add(new SearchTerm("ir_classname", irClassNames.get(classObject)));
if (!StringUtils.isEmpty(name)) {
if (classObject.equals("commoditycodes")) {
searchTerms.add(new SearchTerm("HierarchyPath", name));
}
else {
searchTerms.add(new SearchTerm("Name", name));
}
}
if (!StringUtils.isEmpty(uniqueName)) {
searchTerms.add(new SearchTerm("UniqueName", uniqueName));
}
StringBuilder sb = new StringBuilder();
sb.append(
archesURL + searchOptions + "&adapter=" + MDSAdapterId + "&tenant=" + anId + "." + client + "&q=" + "(");
for (SearchTerm st : searchTerms) {
sb.append(st.toString());
}
sb.append(")");
if (rows > 0) {
sb.append("&rows=" + rows);
}
// Get only the fields specified by "field" query parameter
// else get every fields for the object
sb.append(getReturnFields(fields));
JSONArray arr = getJSONArrayFromResponse(sendGet(sb.toString()));
return arr.toString();
}