Задать вопрос
  • Как исправить тестовую аутентификацию по маршруту?

    @tukreb
    Потому что в новом симфони поменялся метод авторизации. Теперь так
    /** @var UserRepository $userRepository */
            $userRepository = $this->client->getContainer()->get(UserRepository::class);
            /** @var User $user */
            $user = $userRepository->findOneByUsername('john_user');
            $this->client->loginUser($user);

    Вот тут можете подсмотреть детальнее https://github.com/symfony/demo/blob/main/tests/Co...
    Если нужно для API, то вот я не давно делал таким способом
    https://github.com/berkut1/scpm/blob/2e2f72b0467a3...

    И да, пользователи должны существовать в бд или где у вы храните данные при тестировании. Проще говоря фикстуры.
    Ответ написан
    2 комментария
  • Как исправить ошибку 'No expectations were specified' для метода factory в Mockery?

    kirillprof
    @kirillprof
    Ошибка `No expectations were specified` возникает, когда Mockery вызывает метод на моке, но для этого вызова не настроено ожидание. Это происходит, потому что вы не указали, что именно должен возвращать метод `factory`.

    Метод `factory` должен возвращать объект транзакции, который передаётся в `doTransaction`. Из кода видно, что вы используете `$this->tm->doTransaction($transaction)`, где `$transaction` — результат вызова `factory`. Значит, вам нужно создать мок для транзакции и вернуть его.

    Пример исправления:
    // Создаём мок объекта транзакции
    $transaction = Mockery::mock(TransactionInterface::class); // Или конкретный класс транзакции, если он известен
    
    // Настраиваем ожидания для factory
    $this->insertOnDuplicateKeyUpdateTransactionFactory->shouldReceive('factory')
        ->once()
        ->with(
            ProductQueue::class,
            $trData,
            [ProductQueue::TABLE_COLUMN_MPN_PRODUCT_ID]
        )
        ->andReturn($transaction); // Возвращаем мок транзакции
    
    // Настраиваем вызов метода doTransaction с этим объектом
    $this->tm->shouldReceive('doTransaction')
        ->once()
        ->with($transaction)
        ->andReturnNull(); // Или результат метода doTransaction, если он возвращает что-то

    Теперь тест корректно проверяет вызовы `factory` и `doTransaction`.
    Ответ написан
    2 комментария
  • Как исправить ошибку 'No expectations were specified' для метода factory в Mockery?

    Моки и их ожидания нужно описывать до вызова кода который от этих моков зависит.

    У вас часть ожиданий описана в самом конце теста, уже после вызова тестируемых методов.
    Ответ написан
    Комментировать
  • Как реализовать поставленную задачу?

    sHinE
    @sHinE
    веб-разработчик, php/js/mysql и сопутствующее
    Регуляркой вырезаете количество секунд.
    Создаёте промис.
    Делаете таймаут на резолв промиса с переданным именем через полученное количество секунд
    Возвращаете промис.

    Я бы как-то так сделал.
    Ответ написан
    1 комментарий