验证时Laravel Jetstream + Livewire + Teams FeatureTest问题

丹尼斯·古兹曼

我在Teams和Livewire中使用了Laravel Jetstream的全新安装。一切都按预期工作,但是当我尝试用livewire做一些测试时,出现此错误

1) Tests\Feature\ContactFormTest::contact_form_page_contains_contact_form_livewire
ErrorException: Trying to get property 'id' of non-object (View: /var/www/livewire/resources/views/navigation-dropdown.blade.php) (View: /var/www/livewire/resources/views/navigation-dropdown.blade.php) (View: /var/www/livewire/resources/views/navigation-dropdown.blade.php)
/var/www/livewire/vendor/laravel/jetstream/src/HasTeams.php:28
/var/www/livewire/vendor/livewire/livewire/src/CompilerEngine.php:38
/var/www/livewire/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:60
/var/www/livewire/vendor/livewire/livewire/src/LivewireViewCompilerEngine.php:32
/var/www/livewire/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:61
/var/www/livewire/vendor/laravel/framework/src/Illuminate/View/View.php:139
/var/www/livewire/vendor/laravel/framework/src/Illuminate/View/View.php:122
/var/www/livewire/vendor/laravel/framework/src/Illuminate/View/View.php:91
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Http/Response.php:62
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Http/Response.php:34
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Router.php:765
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Router.php:737
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Router.php:691
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php:29
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php:44
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:77
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php:58
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:116
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:62
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:67
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Router.php:693
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Router.php:668
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Router.php:634
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Routing/Router.php:623
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:166
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:128
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php:87
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/fruitcake/laravel-cors/src/HandleCors.php:37
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/fideloper/proxy/src/TrustProxies.php:57
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:167
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:103
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:141
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:110
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:508
/var/www/livewire/vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php:292
/var/www/livewire/tests/Feature/ContactFormTest.php:20

看起来多数民众赞成与团队有关。有谁知道如何解决此问题?提前致谢

摩拉

我刚才有这个问题。这是因为工厂用户没有创建个人团队。

$user = App\Models\User::factory()->create()
dd($user->personalTeam()); // null

您可以使用强化操作中的相同代码强制创建个人团队:

App \ Actions \ Fortify \ CreateNewUser @ createTeam

然后您的测试应如下所示:

/** @test */
public function test_livewire_component_is_present()
{
    $user = User::factory()->create();
    //CreateNewUser@createTeam
    $user->ownedTeams()->save(Team::forceCreate([
        'user_id' => $user->id,
        'name' => explode(' ', $user->name, 2)[0]."'s Team",
        'personal_team' => true,
    ]));
    // ... The rest of your test. Here an example:
    $this
        ->get('/') //the route where your livewire component is declared
        ->assertSeeLivewire(''); // your livewire-component name
}

为了避免在每次身份验证中使用此巨大的代码块,您可以在其中创建一个辅助函数signIn()

测试\测试用例

就像是:

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;
    public function signIn($user=false)
    {
        if(!$user) {
            $user = User::factory()->create();
        }

        $user->ownedTeams()->save(Team::forceCreate([
            'user_id' => $user->id,
            'name' => explode(' ', $user->name, 2)[0]."'s Team",
            'personal_team' => true,
        ]));

        $this->be($user);
    
        return $user;
    }
    // ...
}

然后您可以在测试中使用

/** @test */
public function test_foo_bar()
{
    $user = $this->signIn();
    ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

初始安装后在Laravel Jetstream中安装Teams支持

来自分类Dev

Laravel Jetstream View混合路线

来自分类Dev

Laravel Livewire,与livewire组件之间的通信

来自分类Dev

Laravel Livewire组件偏移

来自分类Dev

Laravel Livewire分页

来自分类Dev

laravel livewire介入影像

来自分类Dev

在Laravel JetStream中添加路由前缀

来自分类Dev

Laravel Livewire从组件中的验证器获取错误消息

来自分类Dev

Laravel-在没有Jetstream的情况下实现Fortify两因素身份验证

来自分类Dev

如何在Laravel 8中更改Jetstream徽标?

来自分类Dev

Laravel的本地化和Jetstream / Fortify的航线

来自分类Dev

Laravel 8 Jetstream:在注册过程中添加新字段

来自分类Dev

无法将Jetstream软件包安装到Laravel项目

来自分类Dev

如何在Laravel Jetstream上使用REST API管理用户

来自分类Dev

Laravel Jetstream-是否需要Sanctum保护网络路由?

来自分类Dev

在Laravel JetStream中禁用浏览器会话

来自分类Dev

尝试发布laravel-livewire的配置文件时出错?

来自分类Dev

键入输入元素时的Livewire触发方法

来自分类Dev

Laravel Livewire获取当前页面ID

来自分类Dev

laravel livewire数据未以模态显示

来自分类Dev

Laravel Livewire绑定模型Carbon属性

来自分类Dev

在每次迭代中显示文本laravel Livewire

来自分类Dev

Laravel Livewire Magic Action不起作用

来自分类Dev

Laravel和Livewire单击更改按钮样式

来自分类Dev

Laravel LiveWire-如何将用户的地理坐标传递给LiveWire组件

来自分类Dev

laravel 8x livewire在使用livewire时会给Undefined变量

来自分类Dev

验证用户身份时出现问题:laravel 5.1

来自分类Dev

Microsoft Teams Bot身份验证黑屏

来自分类Dev

如何在带有jetstream惯性的Laravel 8中安装Vuefity?

Related 相关文章

热门标签

归档