是否可以将 supertest 与 hapi 一起使用?

2024-02-25

我用的是hapi,不是express。超级测试还应该有效吗?

如果是这样,有没有一种快速方法可以更改我的代码以使其运行?

我的测试看起来像这样,基于文档 https://github.com/visionmedia/supertest:

import tape = require('tape');
const supertest = require('supertest');
const app = require('../../../../src/app');

tape('creates new user in database', function (assert) {
  supertest(app)
    .get('/ekapi/v1/signup')
    .expect(200)
    ......
});

但它给了我这个错误:

dist/server/app/node_modules/supertest/lib/test.js:55
  var addr = app.address();
                 ^

TypeError: app.address is not a function
    at Test.serverAddress (/home/rje/projects/ekaya/dist/server/app/node_modules/supertest/lib/test.js:55:18)

这是我的应用程序代码:

app.ts

import './core/externalTypes/imports';
import 'reflect-metadata';
import kernel from './core/inversify.config';
import {IServer}  from './core/types/IServer';

let server = kernel.get<IServer>("IServer");
server.start();

服务器.ts

import _ = require('lodash');
import * as hapi from "hapi";
import { injectable, inject } from "inversify";
import { IServer } from "../core/types/IServer";
import { ISignUpRoute } from "../core/types/ISignUpRoute";
import { IRouteHandler } from "../core/types/IRouteHandler";
import { IDatabase } from "../core/types/IDatabase";
import { IConfig } from "../core/types/IConfig";
import { IValidator } from "../core/types/IValidator";

@injectable()
class Server implements IServer
{
    _db : IDatabase;
    _server: hapi.Server;
    _config: IConfig;
    _validator: IValidator;
    _routes: [IRouteHandler];

   constructor(
        @inject("IDatabase") db: IDatabase,
        @inject("IConfig") config: IConfig,
        @inject("IValidator") validator: IValidator,
        @inject("ISignUpRoute") signUpRoute: ISignUpRoute)
    {
        this._db = db;
        this._config = config;
        this._validator = validator;
        this._routes = [signUpRoute];
      this._server = new hapi.Server();
      this._server.connection({
          host: '0.0.0.0',
          port: this._config.webservice_port,
             routes: { cors: true }
      });
        this.addRoutes();
   }

    start() : void
    {
        this._server.start((err : any) => {
             if (err)
                  throw err;
             console.log('Hapi server running at: ', this._server.info.uri);
        });
    }

    addRoutes() : void {
        const self = this;
        this._routes.map(function(routeHandler : IRouteHandler) {
            self._server.route(routeHandler.getRoute());
        });
    }

}

export = Server;

用 js 编写的最小测试代码示例:

'use strict';

const Hapi = require('hapi');
const should = require('chai').expect
const request = require('supertest')


const server = new Hapi.Server();
server.connection({ port: 3000 });

server.route({
  method: 'GET',
  path: '/',
  handler: function (request, reply) {
    reply('Hello, world!');
  }
});

describe('server', function() {
  it('server', function(done) {
    request(server.listener).get('/').expect(200, function(err, resp) {
      should(resp.text).equal('Hello, world!')
      done()
    })
  })
})

的情况下"hapi": "^16"按原样工作。

的情况下"hapi": "^8.1.0"你需要手动运行server.start()在请求之前

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以将 supertest 与 hapi 一起使用? 的相关文章

  • supertest 测试express中间件

    发现以下关于如何在express中测试中间件的提示 https github com visionmedia express blob master test req xhr js我想知道为什么我的测试总是通过 直到我注意到当我从 Expr
  • 如何从 hapi.js 路由处理程序外部进行回复

    我有一个hapi js我想推迟响应的路线 我尝试过存储reply函数并稍后调用它 或者将其包装在 Promise 中 但 hapi 总是立即响应 500 内部服务器错误响应 存储回复以供稍后使用 var pendingReplies ser
  • Node.js / Express / Mocha / Supertest Rest API - 空请求正文

    我已经尽我所能寻找解决方案 我唯一发现的是一个未回复的帖子 如果我忽略了某些事情 我深表歉意 问题是当我尝试获取POST中的值 createQuestionAPI 主体为空 未定义 我收到这样的错误Cannot read proprety
  • 修复 Hapi 版本 19.0.3 错误 415 unsupported media type upload file with multipart/form-data

    我进行了搜索 但找不到正确的答案 我显得很无助 但幸运的是 visua 代码帮助调试了代码 我在index js hapi subtext lib 文件中找到了这一行 if contentType mime multipart form d
  • app.listen() 和 app.get() 如何在express和hapi上工作

    使用 http 节点模块 仅限本机模块 我如何重新创建 app listen 和 app get 使用带有构造函数的 http 模块 var app function opts this token opts token app proto
  • 为什么我的 ES6(使用 Babel)类在实例方法中显示“this”未定义?

    我正在使用 Hapi JS 在 Node 中构建一个应用程序 我有一个身份验证插件类 它给我带来了各种各样的问题 当我尝试引用时this从类的方法中 我收到一条错误消息this未定义 为什么会发生这种情况 摘录 class OAuth co
  • 使用 supertest、express 和 mocha 进行 Grunt 测试 api

    我有一个由express运行的https服务器 我使用mocha和supertest对其进行测试 我的问题是 如果我只运行测试 就可以了 如果我尝试使用 test 运行 gruntfile 然后运行 express 我会看到很多 EADDR
  • heroku 上的 Hapi 服务器无法绑定端口

    我正在为 ReactJS 应用程序开发 Hapi 服务器 但当我尝试部署到 Heroku 时 收到 R10 错误 无法在启动后 60 秒内绑定到 PORT 到底是怎么回事 我正在使用 process env PORT 我也尝试过 parse
  • 如何使用 superagent/supertest 链接 http 调用?

    我正在使用 supertest 测试 Express API 我无法在测试用例中获得多个请求来使用超级测试 以下是我在测试用例中尝试的内容 但测试用例似乎只执行最后一个调用 即 HTTP GET it should respond to G
  • supertest的expect和then有什么区别?

    使用时supertest为了在 JavaScript 中测试异步 HTTP 请求 这两个片段有什么区别 其中一项是正确的 另一项是错误的吗 request http localhost 8080 get api people expect
  • Joi 正则表达式不被识别为正则表达式模式

    我正在尝试为密码字段制定验证规则 它应包含以下内容 必须有号码 必须至少包含一个大写字母 必须包含至少一个小写字母 必须包含以下任何符号 长度应仅为 8 到 20 个字符 这是我使用的正则表达式模式 a z A Z d A Za z d 8
  • wait 仅在异步函数中有效 - 使用 mongoosejs exec() 时

    我正在将 Hapi 项目移植到 v17 并在迁移到 async await 时遇到 Mongoose 的一些问题 对于我的任何在模型 猫鼬 上使用 等待 的代码 对象例如 const result await User findOne em
  • 你能让 Supertest 等待 Express 处理程序完成执行吗?

    I use 超测 https github com visionmedia supertest测试我的 Express 应用程序 但当我希望处理程序进行异步处理时 我遇到了挑战after发送请求 以这段代码为例 const request
  • JOI:数组中允许空值

    我正在尝试在 POST 请求中添加数组验证 Joi array items Joi string single optional 我需要在有效负载中允许空值 您能告诉我如何做到这一点吗 如果你想让数组为空 请使用 Joi array ite
  • 从另一个路由调用 hapi 路由

    我对 HapiJS 还很陌生 我正在构建一个服务 其中有两条路线 route 1 和 route 2 都使用插件架构 我已将两者注册为我的清单文件中的插件 我想从 route2 调用 route1 因此 route2 取决于 route1
  • hapi.js - 404 路由 VS 静态文件路由

    我正在尝试将 Express 应用程序迁移到 hapi js 但我的路线遇到了问题 我只想要 2 GET 我的索引 以及所有不是 的内容重定向到 使用 Express 我有这个 static files app use express st
  • 如何让车把布局在 node/hapi.js 中工作

    我无法在 hapi js 应用程序中渲染车把布局 布局渲染得很好 但部分根本不渲染 只有空白 我这样声明 var handlebars require handlebars layouts require handlebars layout
  • Nodejs Hapi - 如何启用跨源访问控制

    我正在使用 HapiJs Restful Web 服务并尝试启用 cors 以便任何来自不同域的客户端都可以使用我的服务 我在服务器连接对象中尝试了 cors true 但没有成功 你放在哪里cors true 你能添加一些代码吗 不知道你
  • 使用嵌套对象进行 Hapi/Joi 验证

    我对我的其中一条路线进行了以下验证 payload keywordGroups Joi array items Joi object keys language Joi string required containsAny Joi arr
  • 如何使用 Chai Http 发布对象数组

    我正在尝试发布一个对象数组ChaiHttp https github com chaijs chai http像这样 agent post route to api send locations lat lat1 lon lon1 lat

随机推荐

  • 如何控制 Pulumi 中的资源创建顺序

    我正在尝试创建一些资源 并且需要强制执行某种创建顺序 例如创建一个aws s3 Bucket用于在将日志用作输入之前存储日志aws cloudfront Distribution 使用 Pulumi 时如何控制资源创建顺序 一般来说 Pul
  • 将 hgrc 文件签入 Mercurial

    我有一个项目 使用 Mercurial 进行版本控制 使用 SCons 进行构建 使用 google test 来编写单元测试 hgrc 文件挂钩预提交并运行 SCons 来构建项目并运行单元测试 有没有办法 签入 hgrc 文件的一部分
  • 如何显示资源可绘制列表[重复]

    这个问题在这里已经有答案了 我想在列表中显示所有资源可绘制对象 以便用户可以选择一个 有没有办法循环遍历所有 R drawable 项目 这样我就不必将它们硬编码到我的程序中 使用可绘制类上的 getFields 方法 您可以迭代整个可绘制
  • Jquery 依赖下拉框填充 - 如何

    我有依赖的下拉框 如下面的场景所示 有人可以建议如何使用 JQuery Javascript 实现结果吗 设想 HH1
  • 在 PowerShell 版本 2 中将字符串转换为字节数组

    我想做的是使用 SHA1 UTF 8 加密 然后使用 base64 编码和密码字符串值 然而 我需要先进行加密 然后再进行编码 但我却反过来做了 这是代码 Create Input Data enc system Text Encoding
  • 如何从 SQL 二进制字段获取单个字节

    我在 SQL Server 中有一个二进制字段 我想在 SQL 函数中一次读取一个字节 在代码中我将使用字节数组 SQL 中有等效的吗 我用谷歌找不到任何东西 SUBSTRING 函数应该足够了 一个简单的例子 假设表 MyTable 的列
  • 使用 jquery/javascript 增加点击时的 CSS 亮度颜色?

    因此 如果我有一个文本 Click Me to Brighten 它具有某种深绿色十六进制颜色 如 00801a 的CSS颜色属性 我想将其设置为当我单击它时 它会使其变为浅绿色 同样 如果它是某种蓝色 单击它会使它变浅蓝色 基本上我想知道
  • 可可:框架和边界有什么区别?

    UIView及其子类都具有以下属性frame and bounds 有什么不同 The bounds of an UIView http developer apple com iPhone library documentation UI
  • 适用于 Java、Python、Ruby、Node.JS 和 PHP 的开放支付网关库

    我正在寻找支持许多不同支付处理器 API 的通用开源支付库 换句话说 我想开发一个使用单一支付处理 API 的应用程序 但能够轻松地在支付网关之间切换 例如 Authorize Net Payflow Pro Braintree PayPa
  • 信号器程序集加载问题 OWIN

    我在尝试加载类时收到此错误Microsoft AspNet SignalR Owin集会 执行离开后抛出异常Configuration中的方法startup cs 我已经注册了一个全局异常处理程序来尝试捕获异常 但它没有被捕获 public
  • 警报显示使用已弃用的 HREF 而没有绝对 URL

    Facebook 开发者页面中的消息提醒我的网站当前正在使用以下已弃用的功能 社交插件 Like Button Like Box 中没有绝对 URLhref范围 此问题必须在 2013 年 7 月之前解决 我猜它正在谈论 喜欢 的 data
  • TDirect2DCanvas 速度慢还是我做错了什么?

    在寻找替代 GDI 的替代品时 我试图测试 Delphi 的 2010TDirect2D画布Windows 7 中的性能 我通过使用 Direct2D 绘制一条巨大的折线来测试它 结果速度慢得离谱 即使数据量比我使用 GDI 运行相同测试的
  • Instagram API 不返回关注者

    我已通过 Instagram 进行身份验证 并且获得了具有范围的访问令牌follower list 然后我尝试获取我的关注者列表 https api instagram com v1 users self followed by acces
  • 未知的指令类型“toctree”。 Pycharm 出错,但 index.html 有效

    在 PyCharm 中工作时 我在 Sphinx 中创建的文档的预览模式显示 System Message ERROR 3
  • “Where like”子句使用 2 列的串联值与雄辩

    我有一个查询 在多个列中搜索一个术语 其中之一必须是全名 我已将姓名和姓氏分开 因此在搜索时必须连接这两个值 我现在只有搜索名字 我如何将连接添加到姓氏 我正在调查突变体 但我不知道这是否是正确的方法 public function sea
  • 初学者的 C 套接字编程

    我刚刚开始学习套接字编程 发现它非常有趣 目前我正在制作服务器和客户端在同一台计算机上因此我可以拥有IP地址作为环回地址 127 0 0 1一切似乎都运行良好 但现在我正在考虑拥有两台计算机并做这件事 我有以下问题 假设一台计算机是服务器
  • Android SQLiteConstraintException:错误代码19:约束失败

    我已经看到了有关此异常的其他问题 但所有这些问题似乎都通过解决方案解决了 即已存在指定主键的行 对我来说似乎并非如此 我尝试用双引号替换字符串中的所有单引号 但出现了同样的问题 我正在尝试通过执行以下操作将一行插入到我创建的 SQLite
  • 使用 T & F 代替 TRUE & FALSE 有什么问题吗?

    我注意到使用T and F代替TRUE and FALSER 中的函数给了我相同的结果 当然 T and F更简洁 但是 我明白了TRUE and FALSE被更频繁地使用 我想知道两者之间有什么区别吗 使用有什么问题吗T and F T
  • oracle sqlplus中获取sql脚本的执行时间

    我有一个脚本 用于将数据加载到 Oracle 中的表中 通过插入语句列表 如何获取整个加载过程的执行时间 我尝试过set timing on 但这给了我每个插入语句的持续时间 而不是整个过程的持续时间 脚本如下所示 spo load log
  • 是否可以将 supertest 与 hapi 一起使用?

    我用的是hapi 不是express 超级测试还应该有效吗 如果是这样 有没有一种快速方法可以更改我的代码以使其运行 我的测试看起来像这样 基于文档 https github com visionmedia supertest import