java - 使用 EasyMock 测试参数值

标签 java unit-testing easymock

我正在尝试使用 EasyMock 和 TestNG 编写一些单元测试,但遇到了一个问题。鉴于以下情况:

void execute(Foo f) {
  Bar b = new Bar()
  b.setId(123);
  f.setBar(b);
}

我正在尝试测试 Bar 的 Id 是否按照以下方式相应设置:

@Test
void test_execute() {
  Foo f = EasyMock.createMock(Foo.class);

  execute(f);

  Bar b = ?; // not sure what to do here
  f.setBar(b);
  f.expectLastCall();
}

在我的测试中,我不能只调用 f.getBar() 并检查它的 Id,因为 f 是一个模拟对象。有什么想法吗?这是我想查看 EasyMock v2.5 添加的 andDelegateTo()andStubDelegateTo() 的地方吗?

哦,只是为了记录……EasyMock 的文档很糟糕。

最佳答案

啊哈!捕获是关键。

@Test
void test_execute() {
  Foo f = EasyMock.createMock(Foo.class);

  Capture<Bar> capture = new Capture<Bar>();
  f.setBar(EasyMock.and(EasyMock.isA(Bar.class), EasyMock.capture(capture)));
  execute(f);

  Bar b = capture.getValue();  // same instance as that set inside execute()
  Assert.assertEquals(b.getId(), ???);
}

关于java - 使用 EasyMock 测试参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2782937/

相关文章:

java - 使用 EasyMock 在子类中模拟父类(super class)的对象

java - 使用 EasyMock 模拟内部对象方法调用

java - Android 的英语到印地语音译

java - 实现RESTful大文件上传的正确方法

java - 如何将 rxJava2 的 Observable 转换为 Completable?

java - 如何在appium中验证元素的唯一性

node.js - Nodejs Jest 单元测试无法从 Mongodb 查找、findOne 内部返回值

python - Selenium,使用 Python,如何简化脚本以便我可以从其他 python 脚本运行它们?

unit-testing - 如何运行多个 Groovy 单元测试

android - 带有 Mockito 或 Easy Mock 的 Robotium