gpt4 book ai didi

php - 如何测试 Laravel Socialite

转载 作者:可可西里 更新时间:2023-10-31 23:03:23 27 4
gpt4 key购买 nike

我有一个使用 socialite 的应用程序,我想为 Github 身份验证创建测试,所以我使用 Socialite Facade 模拟调用 Socialite driver 方法,但是当我运行测试时告诉我我正在尝试获取 null 类型的值。

下面是我写的测试

public function testGithubLogin()
{
Socialite::shouldReceive('driver')
->with('github')
->once();
$this->call('GET', '/github/authorize')->isRedirection();
}

下面是测试的实现

public function authorizeProvider($provider)
{
return Socialite::driver($provider)->redirect();
}

我理解为什么它会返回这样的结果,因为 Sociallite::driver($provider) 返回一个 Laravel\Socialite\Two\GithubProvider 的实例,并且考虑到我我无法实例化此值,因此无法指定返回类型。我需要帮助才能成功测试 Controller 。谢谢

最佳答案

好吧,这两个答案都很棒,但是他们有很多不需要的代码,我能够从他们那里推断出我的答案。

这就是我需要做的。

首先模拟Socialite User类型

$abstractUser = Mockery::mock('Laravel\Socialite\Two\User')

其次,为其方法调用设置期望值

$abstractUser
->shouldReceive('getId')
->andReturn(rand())
->shouldReceive('getName')
->andReturn(str_random(10))
->shouldReceive('getEmail')
->andReturn(str_random(10) . '@gmail.com')
->shouldReceive('getAvatar')
->andReturn('https://en.gravatar.com/userimage');

第三,您需要模拟提供者/用户调用

Socialite::shouldReceive('driver->user')->andReturn($abstractUser);

然后最后你写你的断言

$this->visit('/auth/google/callback')
->seePageIs('/')

关于php - 如何测试 Laravel Socialite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35294257/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com