返回介绍

await server.inject(options)

发布于 2024-02-12 19:53:56 字数 3346 浏览 0 评论 0 收藏 0

向服务器注入一个模拟传入 HTTP 请求的请求,而不进行实际的套接字连接。 Injection 对于测试目标以及没有网络堆栈的开销和限制的内部调用路由逻辑是很有用的。

该方法使用 shot 模块注入, 以及一些其他选项和响应属性:

  • options - 可以为请求的 URI 分配一个字符串, 或一个对象:

    • method - (可选) 请求 HTTP 方法 (例如 'POST' ). 默认为 'GET' .

    • url - (必要的) 请求 URL. 如果 URI 包含权限 (例如 'example.com:8080' ), 它用于自动设置 HTTP 'HOST' 标头,除非在 headers 中指定了一个。

    • headers - (可选) 带有可选请求 header 的对象,其中每个键是 header 名称,值是 header 内容。 默认为 没有添加 shot headers.

    • payload - (可选) 字符串, buffer 或 包含请求 payload 的对象. 如果是对象,它将被转换为字符串。 默认为 无 payload. 注意,如果没有提供 'Content-Type' header, payload 处理 默认为 'application/json'

    • auth - (optional) 包含解析的身份验证凭据的对象,其中:

      • strategy - (必要) 与提供的验证身份验证策略匹配的名称。

      • credentials - (required) 包含身份验证信息的凭据对象。 credentials 用于绕过默认的身份验证策略, 并直接验证,就好像它们是通过身份验证方案收到的一样。

      • artifacts - (optional) 包含身份验证 artifacts 信息的 artifacts 对象。 artifacts 用于绕过默认的身份验证策略, 并直接验证,就好像它们是通过身份验证方案收到的一样。 默认没有 artifacts.

    • app - (可选) 设置 request.app 的初始值, 默认为 {} .

    • plugins - (可选) 设置 request.plugins 的初始值, 默认为 {} .

    • allowInternals - (可选) 设置 true ,允许访问 config.isInternal 的路由。 默认为 false .

    • remoteAddress - (可选) 设置传入连接的远程地址。

    • simulate - (可选) 带有用于模拟客户端请求流条件以进行测试的选项的对象:

      • error - 如果为 true , payload 传输后触发 'error' 事件 (if any). 默认为 false .

      • close - 如果为 true , payload 传输后触发 'close' 事件 (if any). 默认为 false .

      • end - 如果为 false , 不会结束流。 默认为 true .

      • split - 指示请求 payload 是否将拆分为块。 默认为 undefined , 意味着 payload 不会被分块。

    • validate - (可选) 如果为 false , options 输入未经过验证。 推荐在运行时使用 inject() ,可以在单独测试输入验证情况下执行得更快。

返回值: 具有以下属性的响应对象:

  • statusCode - HTTP 状态码.

  • headers - 包含 header 的对象。

  • payload - 响应 payload 字符串.

  • rawPayload - 原始响应的 payload buffer

  • raw -具有注入请求和响应对象的对象:

    • req - 模拟节点请求对象。
    • res - 模拟节点响应对象。
  • result - 在序列化传输之前,原始处理程序响应 (例如 不是 stream 或视图时) 。 如果不可用,则将值设置为 payload 。 用于检查和重用返回的内部对象 (而不是解析响应字符串).

  • request - the request object .

const Hapi = require('hapi');

async function example() {

  const server = Hapi.server({ port: 80 });
  server.route({ method: 'GET', path: '/', handler: () => 'Success!' });

  const res = await server.inject('/');
  console.log(res.result);        // 'Success!'
}

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文