无法使用 FluentAssertions 读取动态属性

avd*_*per 0 c# xunit dynamic fluent-assertions

我使用 XUnit 和 c Sharp 中的 fluxassertions 进行单元测试。下面是我获取动态类型、将动态对象转换为该动态类型并尝试进行断言的地方:

        var dynamicType = Type.GetType(...);

        dynamic? myObject = JsonSerializer.Deserialize(myJSONData, dynamicType);

        myObject!.Products!.Should().NotBeNull();
Run Code Online (Sandbox Code Playgroud)

如果我调试它, myObject 确实具有所需的属性和值,但是 c Sharp 和 fluenceassertion 会抛出此错误:

  Microsoft.CSharp.RuntimeBinder.RuntimeBinderException : 'xxxxx.Products' does not contain a definition for 'Should'
Run Code Online (Sandbox Code Playgroud)

是否可以进行比较或者我错过了什么?

Jon*_*rup 5

这是 .NET 中的一个限制。它不支持dynamic对象的扩展方法。

解决方法是强制转换myObjectobject,以便Should可以在编译时确定 的适当重载。

一些相关问题: