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

简单模拟-如何?

高玮
2023-03-14

我正在尝试easyMock测试几个类/接口方法。方法,试图捕获参数,但得到一个或另一个错误。如果我只记录了一个期望值,它甚至不会捕获参数管道中的任何内容,如果我使用以下方法,我会得到如下错误代码。

@Test
public void testFireChannelInitializer() throws Exception 
{
    expect(c.pipeline()).andReturn(pipeline).times(1);
    channelListener.fireChannelInitializer(EasyMock.capture(pipe), serverHandler);
    EasyMock.replay(c, pipeline, channelListener);

    initializer.initChannel(c);

    verifyAll();
    assertEquals(4, pipe.getValues().size());
    assertTrue(pipe.getValues().get(0) instanceof LoggingHandler);
    assertTrue(pipe.getValues().get(0) instanceof ObjectEncoder);
    assertTrue(pipe.getValues().get(0) instanceof ObjectDecoder);
    assertTrue(pipe.getValues().get(0) instanceof ServerHandler);
}

结果是错误的

testFireChannelInitializer(com.obolus.generic.impl.DefaultChannelListenerTest)运行时间:3.812秒

你知道怎么回事吗?或者怎么用easy mock?没有好的文档或示例。

共有1个答案

周玺
2023-03-14

easymock网站有一个用户指南,但他们最近重新编辑了自己的网站,指南不像以前那么完整。

我认为你的问题可能是你必须做一个捕获和一个参数匹配。

从用户指南中:

匹配任何值,但在Capture参数中捕获它以供以后访问。您可以执行和(一些匹配器(...)、捕获(c))从对方法的特定调用中捕获参数。您还可以指定Capture Type,告诉给定的Capture应保留第一个、最后一个、全部或没有捕获的值。

所以你可能需要做一个和(捕获(...),参数匹配)

EasyMock还有一个恼人的API“特性”,如果在方法调用中使用一个参数匹配器,那么所有参数也必须包装在匹配器中,即使它是eq()。我想这就是你的特例所抱怨的。所以我认为这是你的两个问题。

我不确定你的方法签名是什么样子的,所以我假设它是

void fireChannelInitializer(Object, ServerHandler);

使用静态导入导入EasyMock后。*

channelListener.fireChannelInitializer( 
                and(capture(pipe), isA(Object.class)), //captures the argument to `pipe` Capture object
                  eq(serverHandler));
 类似资料:
  • 让我们从一个简单的模拟开始学习。Qt Quick使用简单的粒子渲染非常简单。下面是我们需要的: 绑定所有元素到一个模拟的粒子系统(ParticleSystem)。 一个向系统发射粒子的发射器(Emitter)。 一个ParticlePainter派生元素,用来实现粒子的可视化。 import QtQuick 2.0 import QtQuick.Particles 2.0 Rectangle {

  • 我在Java有一个简单的动画,由一个轮子在窗口上移动组成。它只是一个普通的圆圈,从屏幕的左边开始,进入并继续到右边,直到它离开屏幕。然后它循环并重复这个过程。 是一个包含轮子位置的变量。它可以在-(轮子宽度)和窗口大小轮子宽度之间。 我想通过在这个轮子里画一个圆来模拟旋转,这个圆绕着这个圆旋转,就好像它是连着的一样。 想象一下,现实生活中的自行车车轮上有一面红旗。当车轮旋转时,红旗将出现在车轮的边

  • 我试图模拟Scala单例对象。特别是,我需要模拟对象在服务组件(测试中的类)中使用。使用Mockito这是不可能的,测试执行会以以下方式失败: 在这里阅读,Scalamock似乎允许这样做: 要模拟独立的单例对象,请使用。 我的服务组件是这样的: 我的build.sbt有所有这些依赖关系: 但是我找不到这个: 也许这也可以使用EasyMock和PowerMock实现,但我找不到任何Scala示例代

  • 给定一个Kotlin单例对象和一个调用它的方法的乐趣

  • 本文向大家介绍Java 模拟cookie登陆简单操作示例,包括了Java 模拟cookie登陆简单操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java 模拟cookie登陆简单操作。分享给大家供大家参考,具体如下: 最近在做将禅道上的功能接口做到手机端,在做登陆的时候,看了禅道的源码,是由cookie来登陆,所以要做一个模拟cookie登陆的接口,将拿到的cookie放到每次接

  • 问题内容: 我刚开始使用Node,现在正在编写一些单元测试。对于前几个函数,我可以正常运行,但是现在我碰到了一个包含其中的函数。我的函数的简化版本如下所示: 我尝试使用基本节点断言测试库进行测试: 由于执行此操作的时间(以及结果)总是不同的,因此它将始终失败。 在Python中,我可以设置模拟类和对象。有没有一种方法可以在Node中解决此问题而无需将moment.utc()作为函数的参数? 问题答