【发布时间】:2020-06-06 22:28:57
【问题描述】:
如果您需要测试 PHP 应用程序错误处理程序,您必须“模拟”或仅在 Sentry 客户端中禁用远程服务器上的错误发送。这样做的正确方法是什么?
【问题讨论】:
标签: php laravel mocking phpunit sentry
如果您需要测试 PHP 应用程序错误处理程序,您必须“模拟”或仅在 Sentry 客户端中禁用远程服务器上的错误发送。这样做的正确方法是什么?
【问题讨论】:
标签: php laravel mocking phpunit sentry
这是 Laravel 的示例,但这种方法应该适用于任何框架。
use Sentry\Client;
use Sentry\EventFactory;
use Sentry\Options;
use Sentry\Serializer\RepresentationSerializer;
use Sentry\Serializer\Serializer;
use Sentry\Transport\NullTransport;
private function mockSentry(): void
{
/** @var \Sentry\State\Hub $sentry */
$sentry = $this->app['sentry']; // Get sentry object from Laravel's container
$client = new Client(
new Options(),
new NullTransport(),
new EventFactory(
new Serializer(new Options()),
new RepresentationSerializer(new Options()),
new Options(),
'1',
'1',
),
);
$sentry->bindClient($client);
}
【讨论】:
Illuminate\Contracts\Container\BindingResolutionException: Target class [sentry] does not exist. 任何想法为什么我无法从容器中解析哨兵?我也无法从容器中解决任何问题