帮助一下,伙计们,我被分配用 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”完成了一个完整的项目,但我在这里一无所知。谢谢。
错误在于导入:
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";