如何解决AutoFixture 生成一个 JsonDocument?
我目前正在尝试运行单元测试,我需要 AutoFixture 来生成 ngModelChange
属性。
但这是不可能的,因为
JsonDocument
如何使用 AutoFixture 自动创建包含 AutoFixture.ObjectCreationExceptionWithPath : AutoFixture was unable to create an instance from System.Text.Json.Utf8JsonReader&,most likely because it has no public constructor,is an abstract or non-public type.
的类。
我想使用 AutoFixture 创建的类非常简单,所有属性都是简单类型,除了 JsonDocument
。
JsonDocument
解决方法
如果空的 Json 就足够了,您可以使用以下 AutoFixture customization:
public class EmptyJsonDocumentCustomization : ICustomization
{
public void Customize(IFixture fixture)
{
fixture.Customize<JsonDocument>(x =>
x.FromFactory(() =>
JsonDocument.Parse("{}")));
}
}
如果没有,您可能需要序列化与您的场景相匹配的 JSON。
,如果一个空的 JsonDocument
就足够了,我相信 Serhii 提出的解决方案已经足够好了。
如果您想要填充模型,则必须自定义 AutoFixture,以便它知道如何将数据传送到您的 JsonDocument
。如果您还没有 GeneralCarInfo
模型,您可以在测试项目中创建一个并对其进行自定义,使其类似于您希望在 SUT 中拥有的数据。然后您可以自定义您的原始 Car
模型以接收 GeneralCarInfo
的序列化实例。
fixture.Customize<Car>(
c => c.With(
x => x.GeneralCarInfo,(CarInfo ci) => JsonDocument.Parse(JsonSerializer.Serialize(ci))));
查看完整示例 here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。