Здравствуйте. А как тестируют handler?
Есть такой:
public function __construct(
private CityRepository $cityRepository
)
{
}
public function __invoke(CommandInterface $command): void
{
$city = new City(
Id::generate(),
$command->getName(),
$command->getLocation(),
new DateTimeImmutable()
);
$this->cityRepository->add($city);
}
Я хочу проверить, что хендлер записывает в базу значение (или я вообще не должен этого делать и должен проверить только, что как-то срабатывать `__invoke` метод?)
public function setUp(): void
{
BypassFinals::enable();
parent::setUp();
$this->mock = $this->getMockBuilder(CreateCityHandler::class)
->disableOriginalConstructor()
->getMock();
}
public function testCreate() {
$this->mock->__invoke(new CreateCityCommand(
$name = 'Изумрудный город',
1
));
}
И вопрос, а что я могу проверить? Я не могу проверить, что попало в базу, потому что я не знаю Id, по которому туда попадут значения, хендлер ничего не возвращает void. Как вообще их тестируют?