Java 在比较预期调用和实际调用时忽略模拟对象的特定参数

Java 在比较预期调用和实际调用时忽略模拟对象的特定参数,java,easymock,Java,Easymock,我的课程如下: public class MyClass{ Connector con; public MyClass(Connector con){ this.con= con; } public void save(Xyz xyz){ //save 2 instances of xyz one with lastupdatetime as 0 and other with // currenttimestamp xyz.setLa

我的课程如下:

public class MyClass{

  Connector con;

  public MyClass(Connector con){
     this.con= con;
  }

  public void save(Xyz xyz){
     //save 2 instances of xyz one with lastupdatetime as 0 and other with 
    // currenttimestamp
     xyz.setLastUpdateTime(0) ; a
     con.save(xyz) ;
     xyz.setLastUpdateTime(Calender.getInstance().getCurrentTimeInMillis() );

     con.save(xyz);   
  }

}
如何使用easymock编写it的测试用例

问题在于,时间戳是由该方法在运行时找到的。它和模拟对象中的不同。我可以忽略Xyz类的特定参数吗

我可以指定什么在模拟时忽略特定属性

 Easymock.expect(con.save(xyz)).andReturn(something) ??

你可以做一些事情,如果我有选择的话,我会按照大致的顺序去做

  • 创建或查找包装日历调用的现有时钟类。然后,您可以提供一个模拟时钟,该时钟返回用户定义的时间,因此是可测试的。这是相当常见的,如果您不直接依赖静态方法,那么从可测试性的角度来看就更容易了

  • 从类上的getCurrentTime方法获取时间,然后可以重写该方法

  • 编写一个自定义匹配器。示例:

  • 改为使用EasyMock.capture()捕获调用。然后可以从捕获对象检查字段

  • 研究EasyMock(PowerMock?)的扩展,它具有mok静态的功能。不确定这是否适用于这里,因为你们并没有嘲笑日历


  • 为什么没有人回答/