Тестирование заданий Beanstalkd в коде

В настоящее время я представляю Banstalkd в своем проекте Yii2, но у меня были некоторые проблемы с тестами. Примером является тестирование отправленной почты, до того, как модульный тест был синхронным, я проверял, было ли отправлено письмо, и правильный ли он формат электронной почты, и содержит ли он какой-либо текст, но теперь с Beastalkd я не знаю, что делать. Я планирую сначала добавить подтверждение, если работа завершена, а затем проверить остальные. Но как я могу все это делать?

Я использую Codeception, и я проверил документацию http://codeception.com/docs/modules/Queue, но я не вижу ни одного метода, который помог бы проверить состояние работы, и подумал, если работа находится в Другой контекст (Консольное приложение), Как я могу проверить все? Честно говоря, я думаю, что все, что я могу сделать, это просто проверить, была ли работа выполнена, но не провалилась ли она.

Любая идея, ресурс или что-то еще, я был бы очень благодарен.

Есть часть синхронного кода:

    expect('email should be correct', $user->email)->equals('rad8329+8@example.com');
    expect('password should be correct', $user->validatePassword('asdqwe123'))->true();
    expect('email sent', $model->sendEmail())->true();

    $this->specify('message has correct format', function () use ($model) {

        expect('message file exists', file_exists($this->getMessageFile()))->true();

        $message = file_get_contents($this->getMessageFile());
        expect('message "from" is correct', $message)->contains(Yii::$app->params['supportEmail']);
        expect('message "to" is correct', $message)->contains($model->email);

    });

1 ответ

Решение

В этом случае Beanstalkd может показаться "швом" между отдельными частями приложения. Одна сторона помещает сообщение в очередь, и если вы можете проверить правильность сообщения, и в очереди это нормально. Даже наличие реального сообщения в очереди, вероятно, слишком много для простого теста.

Аналогично, чтение реального сообщения из очереди и отправка его по электронной почте может быть слишком сложным. Сообщения из поддельного источника и последующей отправки полностью сформированного электронного письма в класс поддельного отправителя электронной почты достаточно, чтобы доказать, что ваш код работает. Остальные - это другие: интеграция, тесты, проверка того, что сообщение может быть помещено, удалено из очереди или отправлено электронное письмо.

Другие вопросы по тегам