Проблема, которую я хочу решить, состоит в том, как протестировать два зависимых класса в C #.Для тестирования я использую NUnit и Moq.
Допустим, у меня есть пользовательская коллекция, которая автоматически нумерует ее элементы.Значения внутри коллекции должны храниться в ее первоначальном порядке, поэтому она должна быть пересчитана.В следующем коде показан самый простой пример упомянутых классов:
public interface ICustomItem
{
int Id { get; set; }
ICustomCollection<ICustomItem> ParentCollection { get; set; }
}
public interface ICustomCollection<T> where T : ICustomItem
{
IEnumerable<T> Items { get; set; }
void Add(T t);
// And more of course...
}
public class CustomCollection<T> : ICustomCollection<T> where T : ICustomItem
{
public IEnumerable<T> Items { get; set; }
public void Add(T t)
{
// Some logic here...
t.Id = Items.Count(); // Generate Id
}
}
При добавлении элемента в коллекцию генерируется новый Id и присваивается CustomItem.Механизм автоумерации должен быть включен и в другие методы, такие как Remove (), но для этого вопроса я оставил только метод Add.
Вопрос в том, как проверить, работает ли автоумерация правильно?Когда макет передается как параметр, он не изменяется внутри класса.Должен ли я тестировать класс с простым экземпляром класса CustomItem, созданного для тестов?
tl; dr
Другими словами, я хочу иметь возможность изменятьиздеваться внутри класса.