В моем классе пользовательской коллекции есть метод, который требует некоторых дополнительных вещей, которые не важны для моего теста, поэтому я попытался имитировать объект коллекции, чтобы настроить издеваться над этим методом. Пользовательская коллекция является входным параметром метода, который я тестирую, поэтому я отправляю имитируемый объект в качестве входных данных.
Похоже, это работает до тех пор, пока элементы не добавляются в коллекцию. Метод Add выполняется, но коллекция не обновляется, а Count по-прежнему равен 0.
Почему элементы не добавляются в имитируемый объект коллекции?
Вот упрощенная настройка моего кода:
Код: Выделить всё
class MyClass {
private string _item;
public MyClass(string item) {
_item = item;
}
}
class MyCollectionClass : Collection {
public string ApplyEdits() {
// Some advanced stuff that is not important for test
return "Actual value";
}
}
class ClassToBeTested {
public int MethodToBeTested(MyCollectionClass myCollection, string[] items) {
items.ForEach(item => {
var myItem = new MyClass(item);
myCollection.Add(myItem);
// When running the test, this should have updated Count on the collection, but it doesn't
});
// After populate, this method is executed, but it is not important for test:
myCollection.ApplyEdits();
return myCollection.Count;
}
}
Код: Выделить всё
[TestMethod]
public void MyTest() {
var mock = new Mock();
mock.Setup(m => m.ApplyEdits()).Returns("dummy");
var classToBeTested = new ClassToBeTested();
var items = new List();
// Populate items
items.Add("test1");
items.Add("test2");
items.Add("test3");
var result = classToBeTested.MethodToBeTested(mock.Object, items.ToArray());
Assert.AreEqual(items.Count, result);
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... -is-tested
Мобильная версия