Я работаю над пакетом, который опирается на фасад Config
. Сам код работает отлично, но при тестировании я сталкиваюсь с проблемами.Mock Illuminate Конфигурация фасада без Laravel
Первоначально я использовал этот код:
Config::shouldReceive('foo.bar')
->andReturn(true);
Целых others, я столкнулся с некоторыми проблемами.
Позже я прочитал, что насмехается над фасадом Config
isn't encouraged.
Чтобы обойти это, большинство людей, как правило, предлагают использовать следующие вместо:
Config::set('foo.bar', true);
который я считаю, хорошо работает, если вы тестируете от Laravel/лм.
Но моя проблема в том, что нет. Я просто полагаться на несколько Illuminate
пакетов, так что не будет работать, так как я получаю: RuntimeException: A facade root has not been set.
В этот момент кто-то может предположить, что я просто должен вводить зависимость Config
репозитория, но я использую Config
фасад в признаке, который используется моделью Eloquent
, поэтому DI не будет работать.
Есть ли какой-либо другой способ, я могу решить это?
Спасибо!
PS: Этот вопрос был также размещен на Laracasts
Ваш вопрос не связан с моим. Вы используете Lumen, у которого все еще есть большинство пакетов Illuminate, поэтому 'Config :: set()' должен работать до тех пор, пока вы включаете Facades в 'bootstrap/app.php'. Мой вариант использования предназначен для тестирования пакета Laravel/Lumen в автономной среде, где у вас нет всей структуры в вашем распоряжении, поэтому вам нужно полагаться на Testbench.Кроме того, как указано в документации, издевательство над 'Config' не является лучшей практикой. Следовательно, downvote. –