当前位置: 首页 > 知识库问答 >
问题:

如果处理程序中有要模拟的对象,则对vertx响应处理程序进行单元测试

荆城
2023-03-14

示例响应处理程序:

private static void handleGetRequest(RoutingContext ctx) {
    final HttpServerResponse response = ctx.response;
    try {
        A a = B.getSomeA();
        a.handleSomething();
    }
    catch (Exception ex) {System.out.println(ex);}
}

我们如何通过模拟处理程序中的对象来对上述处理程序进行单元测试?

共有1个答案

唐钊
2023-03-14

您需要引入一个seam,其中将的实例提供给处理程序。这样的seam允许您引入模拟/存根/赝品以进行测试。

解决方案可能很简单:

  class MyHandler implements Handler<RoutingContext> {
    private final Supplier<A> aSupplier;

    MyHandler(Supplier<A> aSupplier) { // <-- this is your test seam
      this.aSupplier = aSupplier;
    }

    @Override
    public void handle(RoutingContext ctx) {
      final HttpServerResponse response = ctx.response();
      try {
        A a = aSupplier.get(); // <-- a mocked version can return 'A' in any state
        a.handleSomething();
      }
      catch (Exception ex) {System.out.println(ex);}
    }
  }

将处理程序作为自己的类型进行分离,可以提供额外的好处,即可以单独测试它,但这不是绝对必要的。

 类似资料:
  • 我编写了一个非常简单的tornado处理程序,用于测试远程部署的一些设备的上传速度。主要测试将在所说的远程设备上运行(多亏了cURL),我可以得到上传时间的详细报告。 Tornado处理程序真正要做的唯一一件事就是接受一个包含大量字节的实体(差不多就是这样) 所以,上面的代码是有效的,但它有点。。。几乎是可耻的:-D让它更。。。可展示的,我想展示一些更有用的日志,比如请求上传所花的时间或者类似的东

  • 调用存储引擎的第1个方法是调用新的处理程序实例。 在存储引擎源文件中定义handlerton之前,必须定义用于函数实例化的函数题头。下面给出了1个来自CSV引擎的示例: static handler* tina_create_handler(TABLE *table); 正如你所见到的那样,函数接受指向处理程序准备管理的表的指针,并返回处理程序对象。 定义了函数题头后,用第21个handlerto

  • 如果我有以下代码: 对该循环中某个处理程序的所有调用是并行执行还是顺序执行?如果是顺序的,那么要获得并行执行,正确的方法是什么? 当做

  • 假设我在1..n个VertX(V)实例前面有一个负载均衡器(LB),每个VertX实例都连接到一个队列(Q),我有1..m个后端(BE)。 用户点击一个按钮发出post请求,甚至打开一个web套接字,负载均衡器将请求转发给VertX实例之一,VertX实例向队列发出请求,一个后端使用该消息并返回响应;如果正确的VertX实例使用了它,它可以查找响应处理程序并向用户写入响应;如果错误的VertX实例

  • 使用 GWT 更轻松地测试异步应用程序 您可能从编写 Ajax 应用程序中获得了极大乐趣,但是对它们执行单元测试却着实让人头痛。 在本文中,Andrew Glover 着手解决 Ajax 的弱点(其中之一),即应对异步 Web 应用程序执行单元测试的固有挑战。 幸运的是,他发现在 Google Web Toolkit 的帮助下,解决这个特殊的代码质量问题要比预想的容易。 Ajax 在近期无疑是 W

  • 上周我阅读了有关vertx的文档。我不明白的是vertx处理器是如何工作的?例如 和服务器是: (P.S.我知道我首先应该检查处理程序是否成功,然后采取一些措施,但为了简化代码,我删除了这种检查,如果在30秒内没有任何响应,则处理程序中会出现异常,也会从正式文档中删除。) 从上面的代码中,客户端每秒发送请求,并且不等待响应,但是它有一个处理程序,当响应到来时将执行该处理程序。 jdbcVertx监