我想验证注入的依赖项方法是否使用不同的参数类型调用两次。所以假设我的班级是:
public class MyClass {
@PersistenceContext(name = "PU")
EntityManager entityManager;
public void doSomething() {
Customer customer = new Customer();
Address customerAddress = new Address;
entityManager.persist(customer)
entityManager.persist(customerAddress);
}
}
@PersistenceContext是一个Java EE特定的注释,用于告诉应用服务器为特定的持久单元注入EntityManager。
所以我想测试persist被调用两次,一次传递一个Customer对象,另一次传递一个Address对象。
创建以下测试类传递:
public class MyClassTests {
@Tested
MyClass myClass;
@Injectable
EntityManager entityManager;
@Test
public void TestPersistCustomerAndAddress() {
new Expectations() {{
entityManager.persist(withAny(Customer.class));
entityManager.persist(withAny(Address.class));
}};
myClass.doSomething();
}
}
然而,JMockit似乎忽略了传递给withAny的类类型。我基本上可以改变withAny to withAny(Date.class),测试仍然会通过。
有没有办法验证传递给持久的特定对象类型?
答案 0 :(得分:3)
您是否尝试过使用withInstanceOf(Customer.class)?我认为应该做你想做的事。