如何模拟@PrePersist方法,例如preInit(),我实例化的实体?
我正在使用TestNG。 EasyMock是首选。
@Test(enabled = true)
public void testCreateOrder() {
// Instantiating the new mini order will automatically invoke the pre-persist method, which needs to be mocked/overwritten!
MiniOrder order = new MiniOrder();
order.setDate(new Date());
order.setCustomerId(32423423);
}
MiniOrder.java是一个具有预先持久化方法的实体。再次,我喜欢模拟/覆盖的那个。例如。 this.id = 1
;或者,也可以模拟IdGenerator.getNewId()
方法。
@PrePersist
protected void preInit(){
this.id = IdGenerator.getNewId();
}
我不希望调用IdGenertor
类,因为它试图获取jndi资源。我只是不明白如何提前捕获这个预先持久化的方法,以便在对象完全实例化之前它不会被不同的代码替换,而是被替换为。
答案 0 :(得分:4)
在这种情况下,你真正想要的是模拟IdGenerator
依赖项,恰好是从@PrePersist
方法调用的。
使用JMockit,测试可以写成如下:
@Test
public void createOrder()
{
new MockUp<IdGenerator>() {
// change as needed...
@Mock int getNewId() { return 123; }
};
MiniOrder order = new MiniOrder();
order.setDate(new Date());
order.setCustomerId(32423423);
}