微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FluentAssertion:使用对象的内部私有列表声明对象相等性

如何解决FluentAssertion:使用对象的内部私有列表声明对象相等性

我尝试使用FluentAssertion通过测试,但是得到了著名的“ system.invalidOperationException:未找到要比较的成员”,我不知道如何在此特定环境下通过测试。

与根进行比较的对象类型具有一个私有的内部对象列表(浅色),我不知道如何编写BeEquivalentTo函数的config options对象。

    public class LightDashboard
    {
        private List<Light> _innerList;

        public LightDashboard(List<Light> innerList)
        {
            _innerList = innerList;
        }
   }



    public class Light
    {
        private bool _value;

        public Light(bool value)
        {
            _value = value;
        }
    }

测试结果如下:

    [Test]
    public void ListWithSameNumberOfElementsButDifferentValuesShouldNotBeEquivalent()
    {
        List<Light> sutInnerList = new List<Light>() {
            new Light(true)
        };
        _sutObject = new LightDashboard(sutInnerList);

        List<Light> expectedInnerList = new List<Light>(){
            new Light(false)
        };
        _expectedobject = new LightDashboard(expectedInnerList);

        _sutObject.Should().NotBeEquivalentTo(_expectedobject);
    }

解决方法

这没有魔术。您的属性为private,因此FluentAssertions将忽略它们。实际上,在测试中观察对象的内部细节是恕我直言的错误做法。您只应声明类的可观察行为。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。