【问题标题】:How to deal with external type?如何处理外部类型?
【发布时间】:2016-03-11 20:34:09
【问题描述】:

假设我有一些项目需要与第三方 API 进行通信。它使外部类型分散在我的代码中。甚至我的测试用例也需要导入这些类型。

现在假设我有一个将外部类型转换为DTO 的编组服务;我需要一个测试来验证我的服务的行为,因为我需要外部类型的文本固定装置。

class Marshalling {
  private Marshalling() {}

  static Api.LineItemRequest requestToProto(LineItem lineItem) {
    SomeBuilder builder = SomeClass.newBuilder()
        .setType(lineItem.getLineItemType().toString())
        .setStatus(lineItem.getStatus().toString());
    return builder.build();
  }
}

现在,外部类型并不容易创建。我应该怎么办?我应该给我的服务一些虚拟类型吗?

对该类型的引用是here

【问题讨论】:

    标签: java unit-testing architecture domain-driven-design


    【解决方案1】:

    如果难以创建外部类型,请继续使用模拟(EasyMockMockito 等),但如果可能,我会尝试创建真实对象。尝试为您不关心的所有内容传递空值。看起来该对象有一个无参数构造函数,然后是一个 bean API,所以您应该能够构造它,然后只需设置您认为必要的位。

    【讨论】:

    • 但它有大约 100 个参数,其中大部分是其他一些第三方类型。
    • 你需要这些参数吗?这是一颗豆子。使用无参数构造函数,设置您有兴趣测试的值,并将其余部分留空。
    • 你的意思是如果我只需要订单ID,那我就可以lineItem.setOrderId(),剩下的一切都会处理好?
    • 不确定,我肯定会从那里开始。只有当该方法失败时,我才会使用我在帖子中提到的模拟进行调查。
    • 那么,可以在代码库中使用外部类型吗?我不应该用我的域类型包装那种类型吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多