Twinkle

Laravelの活用にはサービスコンテナの理解が最も大事

どんなクラスでもモックしやすくなる。

AppServiceProvider

use Twilio\Rest\Client;

class AppServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        $this->app->bind(Client::class, function ($app) {
            return new Client('', '');
        });
    }

Controller

use Twilio\Rest\Client;

$twilio = app(Client::class);

$message = $twilio->messages->create()
//

Test

use Mockery;
use Mockery\MockInterface;
use Twilio\Rest\Api\V2010\Account\MessageInstance;
use Twilio\Rest\Client;
use Twilio\Rest\Api\V2010\Account\MessageList;

    public function test_twilio(): void
    {
        $this->mock(Client::class, function (MockInterface $mock) {
            $message = Mockery::mock(MessageInstance::class);
            $message->sid = 0;

            $messages = Mockery::mock(MessageList::class);
            $messages->shouldReceive('create')->andReturn($message);

            $mock->messages = $messages;
        });

        $response = $this->get('/twilio');

        $response->assertOk();
    }

とはいえこの質問の例だと$twilio->messagesで呼び出してるのでモックしにくい。
古い時代のコードだったりOpenAPIで自動生成しただけのコードはプロパティを使ってることが多い。
Laravel用パッケージを作る時はユーザーのテストしやすさまで考えてメソッドで呼び出す$twilio->messages()->create()の形にしたほうがいい。

https://stackoverflow.com/questions/78889243/how-to-mock-the-twilio-library-in-laravel/78890240