[英]How to mock params request unit test google cloud function?
我試圖實施的是我的 GCP function 的單元測試。我想模擬請求參數來測試我的 function 我該怎么做?
這是我的 GCP function:
@Override
public void service(HttpRequest request, HttpResponse response)
throws IOException {
String name = request.getFirstQueryParameter("name").orElse("world");
try {
JsonElement requestParsed = gson.fromJson(request.getReader(), JsonElement.class);
JsonObject requestJson = null;
if (requestParsed != null && requestParsed.isJsonObject()) {
requestJson = requestParsed.getAsJsonObject();
}
if (requestJson != null && requestJson.has("name")) {
name = requestJson.get("name").getAsString();
}
} catch (JsonParseException e) {
logger.severe("Error parsing JSON: " + e.getMessage());
}
var writer = new PrintWriter(response.getWriter());
writer.printf("Hello %s!", name);
}
這是我的測試:
public class HelloHttpTest {
@Mock private HttpRequest request;
@Mock private HttpResponse response;
private BufferedWriter writerOut;
private StringWriter responseOut;
private static final Gson gson = new Gson();
@BeforeEach
public void beforeTest() throws IOException {
MockitoAnnotations.initMocks(this);
BufferedReader reader = new BufferedReader(new StringReader(""));
when(request.getReader()).thenReturn(reader);
responseOut = new StringWriter();
writerOut = new BufferedWriter(responseOut);
when(response.getWriter()).thenReturn(writerOut);
}
@Test
public void helloHttp_noParamsGet() throws IOException {
new HelloHttp().service(request, response);
writerOut.flush();
Assertions.assertEquals(responseOut.toString(),"Hello world!");
}
}
我想測試這一行name = requestJson.get("name").getAsString();
是否工作。 我怎樣才能用name
參數發出虛假請求,而我的 GCP 會得到它?
嘗試以下
BufferedReader reader = new BufferedReader(new StringReader("{\"name\":\"world\"}"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.