如何插入请求体?

问题描述 投票:0回答:1

帮助一下,伙计们,我被分配用 javascript 研究加特林以进行性能测试,但我还很初级,甚至很难从项目中发出登录请求。

这是文档: https://docs.gadling.io/reference/script/protocols/http/request/#request-name
这里还有一个人制作的很棒的视频,如果我错过了一些先决条件,我可以用它来进行双重检查: https://www.youtube.com/watch?v=s4WeRrCAk-8

到目前为止,这是我想出的解决方案:

import { atOnceUsers, scenario, simulation } from "@gatling.io/core";
import { http, status, StringBody } from "@gatling.io/http";

export default simulation((setUp) => {
    const httpProtocol = 
    http.baseUrl('https://example.test.com')
      .acceptHeader('*/*')
      .contentTypeHeader('application/json');

    const loginAndLogout = scenario('Login and logout')
      .exec(http('Login').post('/login')
      .body(StringBody("{ \"username\": \"testUser\", \"password\": \"testPass\", \"channel\": \"web\" }"))
      .check(status().is(200))  // Check for a 200 OK response
);

      setUp(loginAndLogout.injectOpen(atOnceUsers(1))).protocols(httpProtocol);
});

一个简单的 get 请求可以工作,但是带有正文的 post 请求无法为我完成这项工作。我刚刚得到:

“[错误] i.g.a.Gadling$ - 运行崩溃 org.graalvm.polyglot.PolyglotException:类型错误:未定义不是一个函数。”

错误本身对我来说并没有太多意义。

我之前用“k6”完成了一个完整的项目,但我在这里一无所知。谢谢。

javascript testing performance-testing gatling
1个回答
1
投票

错误在于导入:

import { atOnceUsers, scenario, simulation } from "@gatling.io/core";
import { http, status, StringBody } from "@gatling.io/http";

StringBody
需要从
core
导入,而不是
http
:

import { StringBody, atOnceUsers, scenario, simulation } from "@gatling.io/core";
import { http, status } from "@gatling.io/http";
© www.soinside.com 2019 - 2024. All rights reserved.