gpt4 book ai didi

jpa - 如何模拟@PrePersist 方法?

转载 作者:行者123 更新时间:2023-12-03 23:25:22 26 4
gpt4 key购买 nike

我如何模拟 @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 是一个具有 pre-persist 方法的实体。再次,我喜欢 mock /覆盖的那个。例如。 this.id = 1 ;或者,也可以模拟 IdGenerator.getNewId()方法。
@PrePersist
protected void preInit(){
this.id = IdGenerator.getNewId();
}

我不想要 IdGenertor要调用的类,因为它试图获取 jndi 资源。我只是不明白如何提前捕获这个 pre-persist 方法,以便在对象完全实例化之前它不会被触发,分别被不同的代码替换。

最佳答案

在这种情况下,您真正​​想要的是模拟 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);
}

关于jpa - 如何模拟@PrePersist 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24673150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com