Potrzebuję przetestować następującą metodę bez zmiany samej metody. Metoda tworzy metodę POST na serwerze. Ale muszę zrobić przypadek testowy, który jest niezależny od serwera.Test Java Junit Żądanie HTTP POST
Testowałem podobną metodę przed przekierowaniem jej do pliku lokalnego. Ale to dawałem protokół jako plik, nazwa hosta jako localhost i port jako -1.
Mój problem polega na tym, że ta metoda wykonuje post i rzuca na HttpURLConnection i wr = new DataOutputStream (conn.getOutputStream()); nie będzie działać na lokalnym txt za pośrednictwem http.
// konstruktor
public HTTPConnector(String usr, String pwd, String protocol,
String hostname, int port) {
this.usr = usr;
this.pwd = pwd;
this.protocol = protocol;
this.hostname = hostname;
this.port = port;
// connect();
}
// metoda muszę przetestować
public String doPost(String reference, String data) throws IOException {
URL url = null;
HttpURLConnection conn = null;
BufferedReader rd = null;
DataOutputStream wr = null;
InputStream is = null;
String line = null;
StringBuffer response = null;
url = new URL(protocol, hostname, port, reference);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Authorization", "Basic dGVzdDphc2Rm");
conn.setRequestProperty("Content-Type", "application/xml");
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
// Send response
wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(data);
wr.flush();
wr.close();
// Get response
is = conn.getInputStream();
rd = new BufferedReader(new InputStreamReader(is));
response = new StringBuffer();
while ((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
return response.toString();
}
// przy czym sposób mogę przetestować
public String doGet(String reference) throws IOException {
connect();
URL url = new URL(protocol, hostname, port, reference);
InputStream content = (InputStream) url.getContent();
BufferedReader xml = new BufferedReader(new InputStreamReader(content));
return xml.readLine();
}
Czy spojrzałeś na użycie próbnych obiektów? – buymypies
wel it doesnt idzie do wszystkiego lokalnego, więc trudno mi go przekierować. jeśli mogę znaleźć sposób na przekierowanie go do lokalnego pliku lub klasy, to mógłbym wykonać pracę, ale jedynym sposobem, jaki widzę, jest utworzenie lokalnego serwera/wątku. ale to oznacza, że muszę skierować moje testy na serwer, aby uzyskać tam dane i serwer, który sam musi zostać zaprogramowany do handlu, aby zażądać, a to znacznie więcej pracy niż wydajnej. – Gabain1993