Тестирование состояния и поведения кода, который не пересекает границы интеграции - PullRequest
0 голосов
/ 16 ноября 2010

У меня есть метод, в который передаются некоторые объекты данных, выполняются некоторые вычисления для заполнения ранее пустых полей объектов на основе других полей, а затем отправляются результаты. Этот метод на самом деле не пересекает границы интеграции - объекты данных являются объектами с довольно сложным деревом зависимостей от других объектов, но с точки зрения этого метода они являются просто объектами с состоянием (спасибо ORM).

Мне кажется, что для модульного тестирования это потребует проверки состояния - настройте некоторые данные, запустите код, чтобы выполнить вычисления и проверить результаты. Является ли это законным случаем игнорирования того, что, по-видимому, встречает совет, что тесты должны проверять поведение, а не состояние? Или я неправильно истолковываю литературу, основанную на тестах?

Ответы [ 2 ]

2 голосов
/ 16 ноября 2010

Я бы сказал, что вы тестируете поведение метода, который выполняет вычисления, так что это не проблема.

Некоторые люди могут предложить использовать поведение в отдельном методе (как услуга)и не в тех классах, которые содержат данные, может быть запах кода, но это другая проблема.

0 голосов
/ 16 ноября 2010

Поведение состоит в том, что при заданном состоянии ввода вы получаете ожидаемое состояние вывода. Модульные тесты должны создавать фиктивные объекты (возможно, имитирующие) с известным состоянием, запускать тестируемый метод и затем проверять вывод (в данном случае это состояние входного параметра).

...