Рассмотрим следующий метод:Как мне высмеять объект, который я не могу передать методу запуска исключения?
function m1()
{
$ent = new Entity;
...
try {
$ent->save();
} catch (QueryException $e) {
...
}
Я должен вызвать исключение. Предпочтительно с mockery
. Как мне это сделать?
P.S. Я не могу передать $ent
в метод.
UPD Позвольте мне описать мой конкретный случай, чтобы подтвердить, нужно ли мне инициировать исключение. Здесь я пытаюсь проверить действие контроллера, которое инициируется платежной системой, чтобы сообщить, что пользователь произвел платеж. В этом я, помимо прочего, храню в базе данных все данные, поступающие из платежной системы, в модель PaymentSystemCallback
и свяжу ее с моделью Order
, которая создается перед перенаправлением пользователя в платежную систему. Таким образом, это выглядит следующим образом:
function callback(Request $request)
{
$c = new PaymentSystemCallback;
$c->remote_addr = $request->ip();
$c->post_data = ...;
$c->headers = ...;
...
$c->save();
$c->order_id = $request->request->get('order_id');
$c->save();
}
Но если неправильно order_id
приходит, ограничение внешнего терпит неудачу, поэтому я изменить его таким образом:
try {
$c->save();
} catch (QueryException $e) {
return response('', 400);
}
Но это не выглядит хорошо обрабатывать любую базу данных исключение таким образом, поэтому я ищу способ реконструировать исключение, кроме $e->errorInfo[1] == 1452
.
Никаких жалоб от меня. Это ясно и точно. Под капотом он использует трюк с автозагрузкой, чтобы связать макет с целевым классом. – bishop