Задать вопрос
@PickGG

Как тестировать методы работающие с приватными или защищенными полями?

Есть такой простой код.

class Worker { }

    interface IOffice
    {
        void AddWorker(Worker worker);
        Worker[] GetWorkers();
    }

    class Office : IOffice
    {
        private List<Worker> _workers;

        public Office()
        {
            _workers = new List<Worker>();
        }

        public void AddWorker(Worker worker)
        {
            _workers.Add(worker);
        }

        public Worker[] GetWorkers()
        {
            return _workers.ToArray();
        }


Как протестировать метод AddWorker на добавление элементов? Чтобы это сделать мне нужно в тесте получить список Worker'ов.

Какой вариант выбрать?
  1. Через вызов GetWorkers не пойдет я буду тестировать сразу два метода - это плохо.
  2. Если сделаю поле _workers как internal тогда нарушится инкапсуляция
  3. Получить поле через рефлексию
  4. Может есть вариант получше?
  • Вопрос задан
  • 340 просмотров
Подписаться 1 Простой 1 комментарий
Ответ пользователя Александр Юдаков К ответам на вопрос (3)
AlexanderYudakov
@AlexanderYudakov
C#, 1С, Android, TypeScript
Не стоит использовать CLR, C# и компьютер.
Вы должны использовать только AddWorker.
Делайте это на бумаге. Авторучкой. С чернильницей.
Ответ написан
Комментировать