java - JMockit 验证使用不同参数调用两次的可注入(inject)方法

标签 java jmockit

我想验证注入(inject)的依赖方法是否使用不同的参数类型调用了两次。所以假设我的类(class)是:

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 特定注释,用于告诉应用程序服务器为特定持久性单元注入(inject) 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 更改为 withAny(Date.class) 并且测试仍然会通过。

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

最佳答案

您是否尝试过使用withInstanceOf(Customer.class)?我认为这应该可以满足您的要求。

关于java - JMockit 验证使用不同参数调用两次的可注入(inject)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39040532/

相关文章:

java - Spring MVC 如何处理单页应用程序的 header ?

java - 我的车库里真的有车吗?

java - 在 taglib 中声明签名中具有内部类的函数

java - 使用 JMockit 模拟 ResourceLoading

java - 如何使用 JMockit 模拟 Date 类的默认构造函数?

java - 如何关闭 SonarQube 4 中的代码覆盖率?

java - 将 java 代码转换为 c# 代码(十六进制字符串到字节数组)

java - JMockit 没有。 API 调用次数

java - JMockit 和按引用传递。我们中的一个一定是错的(而且可能是我!)

Java 在映射中存储值