如何模拟@PrePersist方法



我如何模拟@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资源。我只是不明白如何提前捕获这个预持久方法,以便在对象完全实例化之前,它不会被触发,分别被不同的代码替换。

在本例中,您真正想要的是模拟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);
}

相关内容

  • 没有找到相关文章

最新更新