如何在 Ballerina 中对 HTTP 服务进行单元测试?

发布于 2025-01-11 08:31:13 字数 286 浏览 0 评论 0原文

假设我有一个用 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 资源方法的行为单元测试?

Suppose I have an echo HTTP service written in Ballerina as follows:

import ballerina/http;

service / on new http:Listener(9090) {

    resource function post echo(@http:Payload json payload) returns json {
        return payload;
    }
}

How can I write unit test the behavior of the echo resource method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无人问我粥可暖 2025-01-18 08:31:13

您可以使用 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 客户端发送一个有效负载并取回它,然后检查 echo 服务是否发回相同的有效负载。

运行测试时,该服务将自动启动。您不必手动运行它们。

You can write unit tests for an HTTP service using the Ballerina HTTP client.

Place the tests inside the tests directory inside your Ballerina project.

Following is an example test:

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);
}

Here, we send a payload and get it back using an HTTP client, and then check whether the echo service sends back the same payload.

When running the tests, the service will be started automatically. You don't have to run them manually.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文