Модульное тестирование AWS Laravel — недопустимый токен безопасности, включенный в запрос

#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 извините, он все еще не работает 🙂