我正在为使用 Laravel Jetstream 和 Livewire 制作的网站编写测试,但视图中包含的默认操作消息组件在尝试测试视图时给了我错误。
需要明确的是,我要测试的视图是 Livewire 组件视图,因此我的用例中可能涉及 Livewire 自动魔法的东西。
更清楚地说,我没有收到 Livewire 公共属性的任何错误:我的意思是我正在毫无问题地将所有其他必要的数据传递给视图。
考试
public function testTheViewTest()
{
$view = $this->view(
'livewire.permission-request.details',
[
'data' => $data,
]
);
$view->assertSee( /* stuff */);
}
错误
Undefined variable: _instance (View: /var/www/resources/views/vendor/jetstream/components/action-message.blade.php) (View: /var/www/resources/views/vendor/jetstream/components/action-message.blade.php)
at storage/framework/views/c49f88cce68697934e3155ad448667e473748274.php:12
8▕ } ?>
9▕ <?php unset($__defined_vars); ?>
10▕
11▕ <div x-data="{ shown: false, timeout: null }"
➜ 12▕ x-init="window.livewire.find('<?php echo e($_instance->id); ?>').on('<?php echo e($on); ?>', () => { clearTimeout(timeout); shown = true; timeout = setTimeout(() => { shown = false }, 2000); })"
13▕ x-show.transition.opacity.out.duration.1500ms="shown"
14▕ style="display: none;"
15▕ <?php echo e($attributes->merge(['class' => 'text-sm text-gray-600'])); ?>>
16▕ <?php echo e($slot ?? 'Saved.'); ?>
+2 vendor frames
3 storage/framework/views/c49f88cce68697934e3155ad448667e473748274.php:12
ErrorException::("Undefined variable: _instance (View: /var/www/resources/views/vendor/jetstream/components/action-message.blade.php)")
+2 vendor frames
6 storage/framework/views/c49f88cce68697934e3155ad448667e473748274.php:12
ErrorException::("Undefined variable: _instance")
考虑
我很确定$_instance
这里缺少的是 Livewire 组件实例,所以我尝试添加一个
'_instance' => (object)['id' => 1]
传递给视图的数据,只是为了给它一个在该<?php echo e($_instance->id); ?>
部分中使用的对象,但我仍然得到相同的错误,就好像我的_instance
值没有被检测到一样。
可能在没有任何新线索的情况下传递new LivewireComponent()
as 值会导致相同的错误。