PHPUnit - Почему ожидание вызова метода не работает? - PullRequest
0 голосов
/ 11 марта 2020

Класс OrderHelper использует класс OrderRepository для обновления заказов (с помощью метода save). Я пытаюсь проверить, вызывается ли OrderRepository::save внутри OrderHelper::saveOrderSource.

Но он продолжает говорить:

Ожидание не удалось для имени метода при вызове равно «save» 1 раз. Ожидается, что метод будет вызываться 1 раз, фактически вызываться 0 раз.

Пожалуйста, помогите.

setUp () метод:

protected function setUp()
{
    $objectManager          = new ObjectManager($this);

    $this->orderRepository = $this->getMockBuilder(OrderRepositoryInterface::class)
        ->setMethods(['save','getList','get','delete'])
        ->disableOriginalConstructor()
        ->getMock();

    $this->helper = $objectManager->getObject(
        OrderHelper::class,
        [
            'orderRepository' => $this->orderRepository
        ]
    );
}

Класс теста:

public function testSave()
{
    $order = $this->createMock(OrderInterface::class);

    $this->orderRepository->expects($this->once())
        ->method('save')
        ->with($order)
        ->willReturn($this->helper);

    $this->helper->saveOrderSource($order, 1);
}

Оригинальный метод в OrderHelper :: saveOrderSource:

public function saveOrderSource(OrderInterface $order, $source = null) : OrderHelper
{
    if(!is_null($order) && !$source){
        $order->setOrderSource($source);
        $this->orderRepository->save($order);
    }

    return $this;
}

1 Ответ

0 голосов
/ 13 апреля 2020

Я думаю, вы должны добавить этот код

    $this->orderRepository->expects($this->once())
        ->method('save')
        ->with($order)
        ->willReturn($this->helper);

В настройке перед следующей строкой

$this->helper = $objectManager->getObject(
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...