Fluent断言类型检查

本文关键字:检查 类型 断言 Fluent | 更新日期: 2023-09-27 18:19:31

我尝试使用FluentAssessments在UnitTest中检查项列表中的属性类型是否为特定类型。

myObj.Items.OfType<TypeA>().Single()
            .MyProperty1.GetType()
                .Should().BeOfType<TypeB>();

不幸的是,我的测试失败,并显示以下错误消息:

类型应为类型B,但找到System.RuntimeType.

为什么它说它找到了System.RuntimeType?我使用调试器来验证MyProperty1的类型是TypeB,它是……我使用.BeOfType<>错了吗?

Fluent断言类型检查

请跳过.GetType()。您询问的不是MyProperty1的类型,而是类型的类型。太深了一层。
public class TypeB { }
public class TypeA
{
    public TypeB MyProperty1 { get; set; }
    public TypeA()
    {
        MyProperty1 = new TypeB();
    }
}
[TestClass]
public class UnitTest1
{
    [TestMethod]
    public void TestMethod1()
    {
        List<object> objects = new List<object>();
        objects.Add("alma");
        objects.Add(new TypeA());
        objects.OfType<TypeA>().Single().MyProperty1.Should().BeOfType<TypeB>();
    }
}