gpt4 book ai didi

PhpSpec 测试捕获异常

转载 作者:搜寻专家 更新时间:2023-10-31 21:09:20 25 4
gpt4 key购买 nike

我有一个简单的测试:

function it_should_return_error_response_exception(Client $httpClient,CommandInterface $commandInterface)
{
$httpClient->setDefaultOption('auth', array('api','api_pass', 'Basic'))
->shouldBeCalled();

$httpClient->getCommand('search', array('api_key' => 'ehudwqukhjda'))
->shouldBeCalled()
->willReturn($commandInterface);

$httpClient->execute($commandInterface)
->shouldBeCalled()
->willThrow(new BadResponseException('???', new Request('POST', 'http://vatteloapesca')));


$this->shouldThrow('Acme\Exception\ErrorResponseException')
->during('runCommand', array('search', array('api_key' => 'ehudwqukhjda')));
}

这是我要测试的代码:

  try{
$result = $this->guzzleClient->execute($command);
} catch (BadResponseException $e) {
ErrorHandler::processError($e);
}
return $result;

错误处理程序类已经过测试,将返回一个扩展“Acme\Exception\ErrorResponseException”的类。问题是,如何模拟从 guzzle 客户端返回的异常?

我尝试使用预言的 willTrhow 和 ThrowPromises https://github.com/phpspec/prophecy

我的错误是什么?

我的意思是,使用这段代码:

 $httpClient->execute($commandInterface)
->shouldBeCalled()
->willThrow(new BadResponseException('???', new Request('POST', 'http://vatteloapesca')));

'runCommand'(测试的函数)它会返回 BadResponseException 但它没有被我的代码捕获。

最佳答案

你可以这样做:

在规范顶部使用异常:

使用 CRMPicco\Bundle\Exception\ImageImportDirectoryUnavailableException;

$this->shouldThrow(ImageImportDirectoryUnavailableException::class)
->during('importImageAssets', [$imageImportPath]);

...并从您的代码中抛出它:

 public function importImageAssets($importDirectory)
{
$filesystem = new Filesystem();

if (false === $filesystem->exists($importDirectory)) {
throw new ImportDirectoryUnavailableException();
}

// ...

}

关于PhpSpec 测试捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24736032/

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