我正在构建一个管理面板,其中的按钮仅在用户类型为“读者”时才可见。为此,我创建了一个自定义刀片,如果,它看起来像这样
Blade::if('reader', function () {
return auth()->check() && auth()->user()->user_type === 'reader';
});
这在行动中效果很好,但我想为其编写一个测试,为此我使用
Pest
,我的测试看起来像这样
Livewire::actingAs($user) // user has a type of reader!
->test(UtilityMeterList::class)
->assertSee('createButton')
我如何渲染按钮:
@reader
<a type="button" class="createButton hidden md:block text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800" href={{ route('utility-meter.create') }}>
{{__('common.create_a_new_one')}}
</a>
@endreader
如果我删除自定义 if,则测试成功,但如果不删除,则测试失败。尝试将自定义刀片更改为门,或者简单的如果,没有任何效果。从错误消息来看,Pest 似乎没有处理 if 语句。有什么想法或建议如何为此功能编写测试吗?任何帮助将不胜感激。
在测试设置中注册您的自定义 Blade 指令,以确保它在测试过程中被识别,从而允许您的测试在使用 @reader 指令时通过。
use Illuminate\Support\Facades\Blade;
Blade::if('reader', function () {
return auth()->check() && auth()->user()->user_type === 'reader';
});
Livewire::actingAs($user)
->test(UtilityMeterList::class)
->assertSee('createButton');