@yasmine
В PHPSpec вы можете проверить передачу аргументов при вызове метода на мок-объекте с помощью метода shouldHaveBeenCalledWith
.
Для начала, вам нужно создать мок-объект с помощью метода prophesize
, передав в него класс или интерфейс, для которого вы хотите создать мок-объект.
Затем вызовите ожидаемый метод с аргументами на мок-объекте и проверьте передачу аргументов с помощью метода shouldHaveBeenCalledWith
.
Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
use ProphecyPhpUnitProphecyTrait; use PsrLogLoggerInterface; class Foo { private $logger; public function __construct(LoggerInterface $logger) { $this->logger = $logger; } public function doSomething($arg1, $arg2) { $this->logger->info("Doing something with args $arg1 and $arg2"); } } class FooSpec extends ObjectBehavior { use ProphecyTrait; function it_should_do_something(LoggerInterface $logger) { $this->beConstructedWith($logger); $logger->info("Doing something with args foo and bar")->shouldBeCalled(); $this->doSomething('foo', 'bar'); $logger->info("Doing something with args foo and bar")->shouldHaveBeenCalledWith(); } } |
В этом примере мы создали мок-объект $logger
с помощью метода prophesize(LoggerInterface::class)
, вызвали ожидаемый метод info
с аргументами "Doing something with args foo and bar" на мок-объекте, а затем проверили, что передача аргументов была выполнена правильно с помощью shouldHaveBeenCalledWith
.