簡體   English   中英

PHP致命錯誤:調用未定義方法Laravel \\ Socialite \\ Contracts \\ Factory :: shouldReceive()

[英]PHP Fatal error: Call to undefined method Laravel\Socialite\Contracts\Factory::shouldReceive()

我正在嘗試在應用程序中使用Facebook,Twitter和github測試我的社交身份驗證。 我使用了Socialte和Laravel 5.1。

這是我嘗試測試的方法:

use Laravel\Socialite\Contracts\Factory as Socialite;

class AuthTests extends TestCase
{
    public function testFb()
    {
        Socialite::shouldReceive('driver')->once()->with('facebook')->andReturn('code');
        $this->visit('/auth/login/facebook');
    }
}

但這永遠無法成功運行,我不斷收到此錯誤:

[Symfony\Component\Debug\Exception\FatalErrorException]Call to undefined method Laravel\Socialite\Contracts\Factory::shouldReceive()

我到處都在尋找可以用來在測試中成功模擬社交名流但找不到任何方法的方法。

在我的控制器中:

private function getAuthorizationFirst($provider)
{
    return $this->socialite->driver($provider)->redirect();
}

這就是我試圖嘲笑的。 社交名流應使用提供程序“ facebook”接收方法“ driver”並返回某些內容。

我很確定我可能錯過了幾件事!

反饋非常感謝!

這應該適用於外牆。 還有你的問題。

在您的應用程序配置中,是您的Socialite別名:

'Socialite' => Laravel\Socialite\Facades\Socialite::class

因此,您確實可以從測試中致電:

Socialite::shouldReceive(....)

但是現在,您將Socialite別名為一個contract ,因此您必須模擬您的合同,如下所示:

class AuthTests extends TestCase
{
    private $socialiteMock;

    public function setUp()
    {
        parent::setUp();
        $this->socialiteMock = Mockery::mock('Laravel\Socialite\Contracts\Factory');
    }

    public function testFb()
    {
        $this->socialiteMock
            ->shouldReceive('driver')
            ->once()
            ->with('facebook')
            ->andReturn('code');
        $this->visit('/auth/login/facebook');
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM