【问题标题】:Testing Beanstalkd jobs in codeception在代码接收中测试 Beanstalkd 作业
【发布时间】:2016-03-18 14:50:17
【问题描述】:

我目前正在将 Banstalkd 引入我的 Yii2 项目,但我在测试中遇到了一些问题。一个例子是测试发送的邮件,之前,当单元测试同步时,我验证了邮件是否已发送,电子邮件格式是否正确,是否包含一些文本,但现在使用 Beastalkd 我不知道该怎么做。如果工作完成,我计划首先添加验证,然后检查其余部分。但是我怎么能做所有的事情呢?

我正在使用 Codeception,并且我检查了文档 http://codeception.com/docs/modules/Queue#.VuwE2x_I7eR,但我没有看到任何有助于检查作业状态的方法,然后再考虑,如果作业在其他上下文中(控制台应用程序),我该如何验证所有的东西?老实说,我认为我能做的只是验证工作是否完成,而不是验证是否失败。

任何想法、资源或任何东西,我都会非常感激。

有一部分同步码:

    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);

    });

【问题讨论】:

    标签: php yii2 codeception beanstalkd


    【解决方案1】:

    在这种情况下,Beanstalkd 似乎是应用程序各个部分之间的“接缝”。一方将消息放入队列,如果你能验证消息是正确的,并且在队列中,那就没问题了。对于简单的测试来说,即使将真实的消息放入队列也可能太多了。

    同样,从队列中读取真实消息并让它发送电子邮件可能太多了。来自虚假来源的消息,然后将完整格式的电子邮件发送到虚假的电子邮件发件人类足以证明您的代码有效。剩下的就是其他的,集成,测试,确保可以放入消息,从队列中取出消息,或者可以发送电子邮件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 2022-10-24
      相关资源
      最近更新 更多