JMockit 自动将 Array 转换为 ArrayList

JMockit converting Array to ArrayList automatically

我正在使用 JMockit 中的本地方法模拟 DAO 方法。实际的 DAO 方法 return 是一个列表,其中本地模拟方法 return 是一个订单数组。 (这不是预期的设计,由于重构时的疏忽,我最终得到了这个)。但是,这仍然可以很好地编译并且(不幸的是)通过了测试用例。

虽然我后来更正了我的模拟方法以匹配实际的 DAO 方法,但我想知道 JMockit 怎么能让我那样模拟。怎么会不匹配return类型呢?这是功能还是错误!

@Test
    public void testApplyTemplate() throws Exception {
        new Expectations() {

            {
                orderDAO.getOrders();
                result = getOrdersMock();
            }
        };
        myService.applyTemplate();
        new Verifications() {

            {
               ...
            }
        };
    }

private Order[] getOrdersMock() {
        Order[] ordersArray = null;
        // create 9 dummy orders, o1 to o9
        orderArray = new Order[] { o1, o2, o3, o4, o5, o6, o7, o8, o9 };        
        return orderArray;
    }

public interface OrderDAO {

    List<Order> getOrders();
}

这是一项功能,在 API documentationresult 字段(第五段)中进行了描述:

Assigning a value whose type differs from the method return type will cause an IllegalArgumentException to be thrown, unless it can be safely converted to the return type. One such conversion is from an array to a collection or iterator.