我如何在 Ballerina 中对 HTTP 服务进行单元测试?
How can I unit test an HTTP service in Ballerina?
假设我有一个用 Ballerina 编写的 echo HTTP 服务,如下所示:
import ballerina/http;
service / on new http:Listener(9090) {
resource function post echo(@http:Payload json payload) returns json {
return payload;
}
}
如何编写单元测试 echo
资源方法的行为?
您可以使用 Ballerina HTTP 客户端为 HTTP 服务编写单元测试。
将测试放在 Ballerina 项目的 tests
目录中。
以下是示例测试:
import ballerina/http;
import ballerina/test;
@test:Config {}
function testService() returns error? {
http:Client httpClient = check new("http://localhost:9090");
json requestPayload = {message: "hello"};
http:Request request = new;
request.setPayload(requestPayload);
json responsePayload = check httpClient->post("/echo", request);
test:assertEquals(responsePayload, requestPayload);
}
在这里,我们发送一个有效负载并使用 HTTP 客户端将其取回,然后检查回显服务是否发送回相同的有效负载。
当运行进行测试时,该服务将自动启动。您不必手动 运行 它们。
假设我有一个用 Ballerina 编写的 echo HTTP 服务,如下所示:
import ballerina/http;
service / on new http:Listener(9090) {
resource function post echo(@http:Payload json payload) returns json {
return payload;
}
}
如何编写单元测试 echo
资源方法的行为?
您可以使用 Ballerina HTTP 客户端为 HTTP 服务编写单元测试。
将测试放在 Ballerina 项目的 tests
目录中。
以下是示例测试:
import ballerina/http;
import ballerina/test;
@test:Config {}
function testService() returns error? {
http:Client httpClient = check new("http://localhost:9090");
json requestPayload = {message: "hello"};
http:Request request = new;
request.setPayload(requestPayload);
json responsePayload = check httpClient->post("/echo", request);
test:assertEquals(responsePayload, requestPayload);
}
在这里,我们发送一个有效负载并使用 HTTP 客户端将其取回,然后检查回显服务是否发送回相同的有效负载。
当运行进行测试时,该服务将自动启动。您不必手动 运行 它们。