Я хотел иметь тестовый пример, где я могу проверить, что список IRule увеличивается при добавлении нового элемента IRule. Метод, который я тестирую, - AddRule. Я хотел сохранить свойство «rules» частным.C# Unit testing. Проверка количества списков
Вот код
public class DefaultRulesManager : IRulesManager
{
private List<IRule> rules;
public DefaultRulesManager()
{
rules = new List<IRule>();
}
public void AddRule(IRule rule)
{
if (rule == null)
{
throw new ArgumentNullException("rule must be set");
}
rules.Add(rule);
}
public bool HasPassed<T, SKU>(T obj, SKU s)
{
IProduct product = (IProduct)obj;
return rules.All(x => x.HasPassed(product, s));
}
}
Как в стороне, ваш метод 'HasPassed' будет более чисто реализован как' return rules.All (x => x.HasPassed (product, s)); '. У вас немного другое поведение, заметьте - он прекратится, как только он найдет первое ошибочное правило. Если вы хотите, чтобы все правила были оценены, даже если некоторые сбой, вы можете использовать 'return rules.Count (...) == rules.Count;'. –
@JonSkeet спасибо! –
Вывести новое свойство под названием 'RulesCount' или метод' HasRule (IRule) 'и протестировать его? Также почему метод 'HasPassed' принимает' T', когда вы бросаете 'T' на' IProduct'? Не может ли быть 'HasPassed' или ограничение T быть IProduct? –