fed*_*der 4 jpa easymock jmockit mocking mockito
如何模拟我实例化的实体的 @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);
}
Run Code Online (Sandbox Code Playgroud)
MiniOrder.java 是一个具有 pre-persist 方法的实体。再说一遍,我喜欢模拟/覆盖。例如this.id = 1;或者,也可以模拟该IdGenerator.getNewId()方法。
@PrePersist
protected void preInit(){
this.id = IdGenerator.getNewId();
}
Run Code Online (Sandbox Code Playgroud)
我不希望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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2255 次 |
| 最近记录: |