dto java_在Java中嘲笑DTO的最佳方式是什么?

模拟框架通常不鼓励模拟数据对象。

但是,每次在测试中需要时填充数据对象可能会很不方便。

常见的方法是使用测试构建器。就像是:

public class MyDtoBuilder {

private Foo foo;

private Bar bar;

public static MyDtoBuilder aMyDto() {

return new MyDtoBuilder();

}

public MyDtoBuilder withFoo(Foo foo) {

this.foo = foo;

return this;

}

public MyDtoBuilder withBar(Bar bar) {

this.bar = bar;

return this;

}

public MyDtoBuilder withDefaults() {

return this.withFoo(new Foo(...)).withBar(new Bar(...));

}

public MyDto build() {

return new MyDto(foo,bar);

}

}现在,您可以方便地使用默认值构建DTO,然后根据需要覆盖它们。如果Foo和Bar很复杂,您也可以为这些构建器提供测试构建器,这样您就可以执行类似的操作

MyDto expectedDto = aMyDto()

.withDefaults()

.withFoo(aFoo()

.withName("testFoo"))

.build();Freeman和Pryce在“测试引导的面向对象软件”一书中详细介绍了这一点。

您应该注意区分测试构建器,这些构建器构建预先填充了合理的测试数据的对象,以及用于非测试代码的构建器(它是实例化不可变对象的常用模式)。不要跨越这些流 - 不要在非测试代码中使用测试构建器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值