#php #laravel #amazon-web-services #phpunit #amazon-cloudfront
#php #laravel #amazon-веб-сервисы #phpunit #amazon-cloudfront
Вопрос:
Я провожу модульное тестирование своего кода AWS Cloudfront, используя phpunit
, если я не тестирую код в командной строке, мой код работает отлично. Но если я тестирую его в командной строке, я получаю эту ошибку: The security token included in the request is invalid.
Я где-то читал, что мне нужно поработать над Laravel «mock», но, похоже, я не могу заставить это работать.
Вот мой код:
$this->instance(CloudFrontService::class, Mockery::mock(CloudFrontService::class, function ($mock) {
$mock->shouldReceive('invalidate')->with("test.txt")->once();
}));
$r = app(CloudFrontService::class)->invalidate("test.txt");
$this->assertTrue($r);
Любые рекомендации приветствуются. Спасибо!
Комментарии:
1. Вам не хватает
returns
метода в вашей цепочке методов, попробуйте добавить что-то вроде:->once()->andReturns(true);
2. @DigitalDrifter он все еще не работает, я получаю эту ошибку:
MockeryExceptionInvalidCountException: Method invalidate('test.txt') from Mockery_0_ xxx_Services2_CloudFrontService should be called │ exactly 1 times but called 0 times.
3. Похоже, он решил вашу первую ошибку и выявил другую 🙂 Имеет ли какое-либо значение, если вы измените порядок своих цепных методов на:
$mock->shouldReceive('invalidate')->once()->with("test.txt")->andReturn(true);
?4. @DigitalDrifter извините, он все еще не работает 🙂