어떻게 @PrePersist 메서드를 조롱합니까? 인스턴스화하는 엔티티의 preInit()?@PrePersist 방법을 조롱하는 방법?
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()
메소드를 조롱 할 수도 있습니다. 그것은 JNDI 리소스를 잡아 시도하기 때문에
@PrePersist
protected void preInit(){
this.id = IdGenerator.getNewId();
}
가 나는 IdGenertor
클래스가 호출되고 싶지 않아. 나는이 프리 - 텐션 방법을 미리 포착하는 방법을 이해하지 못한다. 따라서 객체가 완전히 인스턴스화되기 전에 각각 다른 코드로 대체되었다.
그래서 당신이 실제로 테스트하려고 다음과 같이
JMockit를 사용하여 테스트를 쓸 수있다? @PrePersist라고 표시된 메서드 내에 포함 된 기능을 테스트 하시겠습니까? (당신은 당신의 질문에 그 방법을 제공하지 않았기 때문에 거기에서 도울 것입니다.) 또는 @PrePersist 메서드가 호출되는 지속 연산을 수행 할 때 테스트하려고합니까? –
@ DanTemple 감사. 나는 문안했다. pre-persist 메서드 내에서 IdGenerator가 호출되지 않도록하고 싶습니다. 그러나 이드는 다른 방식으로 설정되어야합니다. – feder
MiniOrder 구축 중에 호출하면 preInit 호출을 모의 할 수는 없을 것이라고 생각하지만 [PowerMock] (https://code.google.com/p/)을 사용할 수 있어야합니다. powermock /)를 호출하여 정적 메소드 호출을'IdGenerator.getNewId()'로 조롱한다. 이 방법이 도움이되는지 확인하려면 [documentation] (https://code.google.com/p/powermock/wiki/MockStatic)을 참조하십시오. –