Как правильно спроектировать классы, чтобы внутреннюю логику можно было тестировать по модулям?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно спроектировать классы, чтобы внутреннюю логику можно было тестировать по модулям?

Сообщение Anonymous »


Я изо всех сил пытаюсь понять, как правильно проектировать код в большой кодовой базе, чтобы можно было легко тестировать части внутренней логики. Вот выдуманный пример:

публичный класс SomeService { публичный SomeService(){} публичное DoThingA (bool flagA) { // много логики ... // в конечном итоге получаем какой-то объект либо через запрос, либо каким-либо другим способом Ответ ObjectA = makeSomeHttpRequest(); // получаем некоторое значение на основе объекта и некоторых других полей вар URL = GenerateUrl (ответ, flagA); // больше логики } частная строка GenerateUrl (ответ ObjectA, bool flagA) { if (response.field1 == "foo" && flagA) { вернуть «plugh.com»; } иначе если (response.field1 == "бар") { вернуть «xyzzy.com»; } еще { вернуть «thud.com»; } } } Если бы я хотел написать модульный тест для обработки логики GenerateUrl, как бы я это сделал?
[*]Возможно, будет непросто выяснить ответ GenerateUrl путем вызова DoThingA, поэтому я не хочу этого делать. [*]Логика GenerateUrl относительно небольшая и является внутренней логикой DoThingA(), поэтому я бы предпочел не публиковать ее только для тестирования. [*]Я мог бы переместить логику GenerateUrl в отдельный класс, от которого зависит SomeService, но в большую базу кода, что приведет к сотням очень маленьких классов, которые могут иметь всего несколько строк логики.
Итак, как правильно это структурировать, чтобы можно было проверить внутреннюю логику? Возможно, GenerateUrl на самом деле представляет собой некую логику проверки или просто любую функцию, для которой я хотел бы использовать модульные тесты.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как тестировать и что нужно тестировать для CommandHandler в CQRS?
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как тестировать и что нужно тестировать для CommandHandler в CQRS?
    Anonymous » » в форуме Php
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как тестировать и что нужно тестировать для CommandHandler в CQRS?
    Anonymous » » в форуме Php
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Отделить внутреннюю логику функции от отображения пользовательской информации с помощью tqdm.
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Отдавайте предпочтение Kestrel за оперативность, а не за внутреннюю логику.
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»