Size: a a a

2020 May 29

h🐴

h0rsie 🐴 in PHP
Мне кажется все логично. Нормальный тест.
источник

h🐴

h0rsie 🐴 in PHP
Kirill Nesmeyanov
Мол, никто же не тестит на тему того, что PK id в моделях больше нуля
А модели разве не должно быть пофиг на то, какой именно там id?
источник

KN

Kirill Nesmeyanov in PHP
h0rsie 🐴
А модели разве не должно быть пофиг на то, какой именно там id?
ну семантически - должно быть, технически - нет)
источник

h🐴

h0rsie 🐴 in PHP
Короче моя мысль такая. В системе должно быть единственное место, где сокрыто знание "значение должно быть в пределах". Если это место и есть модель, то и тест должен быть там же.
источник

h🐴

h0rsie 🐴 in PHP
Kirill Nesmeyanov
ну семантически - должно быть, технически - нет)
Почему ей технически не пофиг?
источник

KN

Kirill Nesmeyanov in PHP
h0rsie 🐴
Почему ей технически не пофиг?
это API же
источник

KN

Kirill Nesmeyanov in PHP
отсюда зависимость от сторонних реализаций
источник

KN

Kirill Nesmeyanov in PHP
а int !== uint
источник

KN

Kirill Nesmeyanov in PHP
ну это так, с ходу
источник

KN

Kirill Nesmeyanov in PHP
помимо этого могу придумать всякие кейсы, вида: function isNew(): bool => return $this->id > 0;
источник

KN

Kirill Nesmeyanov in PHP
ну придираюсь, конечно
источник

h🐴

h0rsie 🐴 in PHP
Kirill Nesmeyanov
это API же
Ну и пусть нижний слой апи ругается. Модель могла бы потенциально работать и с uuid, к примеру, разве нет?
источник

KN

Kirill Nesmeyanov in PHP
ну вот я про то же
источник

KN

Kirill Nesmeyanov in PHP
что лучше тестить нижний слой в данном случае
источник

KN

Kirill Nesmeyanov in PHP
ну или наоборот, верхний, смотря как посмотреть
источник

KN

Kirill Nesmeyanov in PHP
короче, контроллеры:
} catch (\InvalidArgumentException | \AssertionError $e) {
   throw new UnprocessableEntityHttpException(...);
}


типа такого
источник

h🐴

h0rsie 🐴 in PHP
Ещё раз. Проверка должна быть там, где лежит кусок знания из предметной области.
источник

h🐴

h0rsie 🐴 in PHP
Kirill Nesmeyanov
короче, контроллеры:
} catch (\InvalidArgumentException | \AssertionError $e) {
   throw new UnprocessableEntityHttpException(...);
}


типа такого
Ууу валидация это всегда сложно. А нельзя ее в валидатор вынести?
источник

KN

Kirill Nesmeyanov in PHP
я привожу абстрактные примеры)
источник

h🐴

h0rsie 🐴 in PHP
Хотя как это поможет
источник