Для меня это были бы два разных теста (или, если быть точным, наборы тестов). Я бы сказал, что тестирование OrderController
отличается от тестирования OrderService
, даже если в обоих настройках теста есть похожие элементы. Модульное тестирование оценивает простые тесты, которые тестируют одну вещь (один вариант использования с одним объектом) за раз, и ИМХО по уважительной причине. Каждый класс имеет свой собственный интерфейсный контракт с его собственными граничными условиями, которые должны тестироваться отдельно.
Более того, просто протестировать OrderService
через контроллер просто сложно, вместо того, чтобы вызывать его прямо из ваших методов тестирования. Скорее всего, при вызове через контроллер у вас не будет такой большой свободы в передаче «хитрых» параметров для выполнения граничных условий и т. Д.
Поэтому я рекомендую написать два отдельных тестовых класса, оба из которых полностью сосредоточены на тестировании своего собственного класса. Затем, как только вы будете удовлетворены своими модульными тестами и не будете иметь больше идей о том, что тестировать, вы можете взглянуть на методы настройки и вспомогательные методы, чтобы увидеть, можете ли вы удалить некоторое дублирование с помощью небольшого рефакторинга. Но для меня не главное - сохранить несколько строк кода в моих тестовых классах. Суть в том, чтобы протестировать то, что может сломаться, и сделать тесты простыми, чтобы понять, что именно тестирует на самом деле. Попытка тестирования двух объектов одновременно определенно затрудняет понимание ваших тестов (и, следовательно, их поддержку в долгосрочной перспективе).