如何在Dart中为必填字段创建测试用部分模型
解决Dart必填字段模型生成部分修改假数据的问题
你现在的核心问题是,原有OrganisationModel的字段都是必填项,导致生成partial实例时必须传入所有字段(哪怕是空字符串),而空值会覆盖fake函数里的默认假数据。要实现只传需要修改的参数、其余保留默认值,且不改动原模型,可以用以下两种方案:
方案一:创建可选字段的Partial类
新建一个仅用于传递部分修改参数的类,所有字段设为可选类型:
class PartialOrganisation { final String? id; final String? name; final String? numberOfEmployee; final String? activitySector; PartialOrganisation({ this.id, this.name, this.numberOfEmployee, this.activitySector, }); }
然后修改fakeOrganisation函数,接收这个Partial类的实例:
OrganisationModel fakeOrganisation({PartialOrganisation? partial}) { return OrganisationModel( id: partial?.id ?? '1234', name: partial?.name ?? 'MyCompany', numberOfEmployee: partial?.numberOfEmployee ?? '68', activitySector: partial?.activitySector ?? 'Dev', ); }
调用时只需传入要修改的字段:
final modifiedOrg = fakeOrganisation( partial: PartialOrganisation(name: 'MyCompany2', numberOfEmployee: '24') ); // 输出结果:{id: '1234', name: 'MyCompany2', numberOfEmployee: '24', activitySector: 'Dev'}
方案二:用Map作为Partial参数(轻量版)
如果不想额外创建类,可以直接用Map来传递需要修改的参数:
OrganisationModel fakeOrganisation({Map<String, dynamic>? partial}) { return OrganisationModel( id: partial?['id'] ?? '1234', name: partial?['name'] ?? 'MyCompany', numberOfEmployee: partial?['numberOfEmployee'] ?? '68', activitySector: partial?['activitySector'] ?? 'Dev', ); }
调用方式更简洁:
final modifiedOrg = fakeOrganisation( partial: {'name': 'MyCompany2', 'numberOfEmployee': '24'} ); // 同样得到期望结果
这两种方案都不需要改动原有的OrganisationModel,完美满足你只修改部分参数、其余保留默认假数据的需求。
内容的提问来源于stack exchange,提问作者TheSmartMonkey
相关产品推荐
相关产品推荐

