1

我正在为使用 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 值会导致相同的错误。

4

0 回答 0