JMockit验证使用不同参数

时间:2016-08-19 13:40:21

标签: java jmockit

我想验证注入的依赖项方法是否使用不同的参数类型调用两次。所以假设我的班级是:

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),测试仍然会通过。

有没有办法验证传递给持久的特定对象类型?

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用withInstanceOf(Customer.class)?我认为应该做你想做的事。