Как проверить эквивалентность с помощью Fluent Assertion Must().BeEquiвалентTo() при использовании производных классовC#

Место общения программистов C#
Ответить
Anonymous
 Как проверить эквивалентность с помощью Fluent Assertion Must().BeEquiвалентTo() при использовании производных классов

Сообщение Anonymous »

У меня возникли проблемы при попытке заставить метод Must().BeEquiвалентTo() работать с типами, производными от базового класса, и реализовать интерфейс коллекции:

Код: Выделить всё

public class Entity
{
public string Id {get; set;}
public string Name {get; set;}
}

public class Derived : Entity, ICollection
{
private List m_Children = new List();

public string Description { get; set; }

public int Count => ((ICollection)m_Children).Count;

public bool IsReadOnly => ((ICollection)m_Children).IsReadOnly;

public void Add(Entity item)
{
((ICollection)m_Children).Add(item);
}

public void Clear()
{
((ICollection)m_Children).Clear();
}

public bool Contains(Entity item)
{
return ((ICollection)m_Children).Contains(item);
}

public void CopyTo(Entity[] array, int arrayIndex)
{
((ICollection)m_Children).CopyTo(array, arrayIndex);
}

public IEnumerator GetEnumerator()
{
return ((ICollection)m_Children).GetEnumerator();
}

public bool Remove(Entity item)
{
return ((ICollection)m_Children).Remove(item);
}

IEnumerator IEnumerable.GetEnumerator()
{
return ((ICollection)m_Children).GetEnumerator();
}
}
Тест

Код: Выделить всё

[TestMethod]
public void EquivalenceTest()
{
var expected = new Derived
{
Id = "123",
Name = "abc",
Description = "def"
};
var actual = new Derived
{
Id = "121",
Name = "xyz",
Description = "def"
};

actual.Should().BeEquivalentTo(expected);   // This succeeds, but should fail
}
Вызов BeEquiваленто, похоже, игнорирует свойства, определенные в объекте, и обрабатывает объект только как коллекцию.
Как заставить платформу проверять свойства и содержимое коллекции?

Изменить
Кажется, это известная проблема

Кто-нибудь знает обходной путь?

Подробнее здесь: https://stackoverflow.com/questions/603 ... tto-when-u
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»