You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Newman运行Postman集合报CookieJar.getAll() requires a callback function如何解决

问题原因及解决方案

问题根源

Postman桌面端与Newman的pm.cookies接口实现存在版本差异:

  • Postman桌面端已对CookieJar.getAll()方法做了Promise适配,支持直接用await调用
  • Newman依赖的底层运行库中CookieJar.getAll()仅支持传入回调函数获取结果,不会返回Promise,你当前的await写法会直接触发类型错误,同时async函数内的异常没有捕获逻辑,最终抛出未处理的Promise拒绝报错。

修复方案

方案1:改用回调函数写法(兼容性最佳)

直接适配Newman的回调规则,同时通过done()标识异步测试完成,修改后的测试脚本如下:

pm.test("Get a test data", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData.data.createTest.success).to.eql(true);
});

pm.test("Test data cookies set", function (done) {
    const cookieJar = pm.cookies.jar();
    const url = pm.environment.get("service-url");
    cookieJar.getAll(url, function (error, cookies) {
        if (error) {
            done(error);
            return;
        }
        const cookieNames = cookies.map(cookie => cookie.name);
        pm.expect(cookieNames).to.include("test-token");
        pm.expect(cookieNames).to.include("legacy-test-token");
        done();
    });
});

方案2:封装Promise保留async/await写法

如果不想调整原有异步逻辑,可以手动把回调方法包装成Promise:

pm.test("Get a test data", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData.data.createTest.success).to.eql(true);
});

pm.test("Test data cookies set", async function () {
    const cookieJar = pm.cookies.jar();
    const url = pm.environment.get("service-url");
    // 手动封装Promise适配回调API
    const cookies = await new Promise((resolve, reject) => {
        cookieJar.getAll(url, (error, cookies) => {
            if (error) return reject(error);
            resolve(cookies);
        })
    });
    const cookieNames = cookies.map(cookie => cookie.name);
    pm.expect(cookieNames).to.include("test-token");
    pm.expect(cookieNames).to.include("legacy-test-token");
});

修改后重新执行newman run postman_collection.json -e environment.json即可正常运行。


内容的提问来源于stack exchange,提问作者RH-st

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:15:03