#php #laravel #package #package-development
Вопрос:
Я пытаюсь добавить директивы blade для своего пакета Laravel.
Все в порядке, но на этапе тестирования я получаю эту ошибку:
1) MahbodHastamUserWalletTestsFeatureBladeTest::show_user_wallet_balance
InvalidArgumentException: View [userWalletBalance] not found.
Должен ли я обратиться $this->loadViewsFrom(...)
к поставщику услуг?
Путь просмотра: /tests/resources/views/userWalletBalance.blade.php
Тестовый путь: /tests/Feature/BladeTest.php
Я также попытался переместить resources
каталог в Feature
каталог (рядом с BladeTest.php
), но получил ту же ошибку.
Это мой код на BladeTest.php
:
public function show_user_wallet_balance() {
$wallet = UserWallet::getWallet(wallet_id: 1);
$this->assertEquals('1000', $this->renderView('userWalletBalance', ['wallet' => $wallet]));
}
protected function renderView($view, $with) {
Artisan::call('view:clear');
return trim((string) view($view)->with($with));
}
Комментарии:
1. Вы можете обратиться к laravelpackage.com/09-routing.html#views для получения дополнительной информации о загрузке представлений в пакет.
2. В документах говорится о загрузке представлений для всего пакета, но я хочу загрузить представления в своих тестах для тестирования директив blade, которые я добавил ранее.
Ответ №1:
Я исправил это 😀
Вместо загрузки представлений из файлов я использовал InteractsWithViews
свойство (которое находится в IlluminateFoundationTestingConcerns
пространстве имен) для визуализации блейда, как показано ниже:
$renderedView = (string) $this->blade("@userWalletBalance($wallet)");
$this->assertEquals('1000', trim($renderedView));