У меня есть класс Person и интерфейс:Запись C тест # NUnit, не имея доступа к остальной части кода
interface IService
{
double GetAccDetails(int personId);
}
public class Person
{
private int _personId;
private IService _service;
public Person(int personId, IService service)
{
_personId= personId;
_service = service;
}
public double Amount {get; set;}
public void UpdateBackingAcc()
{
Amount = _service.GetAccDetails(_personId);
}
}
И я должен покрыть этот кусок кода с NUnit тестов, однако я не» t иметь доступ к службе, но только к коду, который я опубликовал.
Так что мои вопросы:
Должен ли я moque его для того, чтобы написать юнит-тесты? Если да, он всегда возвращает мне статическую ценность, поэтому я не вижу в ней большой прибыли.
Какие тесты могут быть созданы для данного интерфейса? Я предполагаю, что один из тестов может попытаться использовать
personId1
и получить статическое значение, тогда он может использоватьpersonId2
и может получить другое значение, а затем проверить, была ли эта сумма обновлена или нет. Поэтому, если это правильно, это может быть всего лишь 1 единичный тест.
Возможно, имеет смысл проверить, если значение отрицательное или нет ... может быть также значение 0 ...
Любые другие идеи?
Я думаю, что 'Броски exception' не ответственность' класса Person'. – Fabio
@Fabio вы абсолютно правы! Я попытался теоретически рассмотреть возможность, когда служба получает недопустимое значение Id и выбрасывает исключение. См. Отредактированный ответ. – dee
Нет @dee, я хочу сказать, что вам вообще не нужно 'try .. catch'. И, конечно, вам не нужно его проверять. Если сервис бросит, бросьте его. – Fabio