如何解决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 举报,一经查实,本站将立刻删除。