我想为发送邮件创建单元测试(phpunit,嘲笑)

时间:2018-11-08 06:02:52

标签: phpunit phalcon mockery

使用

  • phpunit(6.5.8)
  • 模仿(1.1.0)
  • 猎鹰(7.2)
  • 猎鹰/孵化器(3.4.0)

我想完成的事情

我想为发送邮件创建单元测试。 这似乎是一个简单的测试,但我做不到。

现在,当我运行测试时,返回false。 但我希望真的回来了。

我犯错了吗?

我要测试的方法

这是要测试的方法

namespace \App\Controllers;

class TestController extends \Base\Controller

private function _sendConfirmationMail()
    {
        $to = "to";
        $from = 'test@example.com';
        $subjectText = 'subjectText';
        $subject = "subject";
        $headers = "Content-Type: text/html; charset=UTF-8" . "\r\n"
                 . "From: Company <{$from}>" . "\r\n"
                 . "Bcc: test@example.com";

        $body = 'body ... ... ... ';

        if (mb_send_mail($to, $subjectText, $body, $headers, "-f {$from}")) {
        return true;
        }
        return false;
   }

单元测试

这是单元测试 (我希望返回true,但现在返回false)

public function testsMailTransmissionSucceeds()
    {
        $mockTestController = $this->getMockBuilder(\App\Controllers\TestController::class)
        ->setMethods(array("_sendConfirmationMail"))
        ->getMock();


    // use reflection class because of private method
    $reflection = new \ReflectionClass($mockTestController);
    $method = $reflection->getMethod('_sendConfirmationMail');
    $method->setAccessible(true);
    $this->assertTrue($method->invokeArgs($mockTestController, "_sendConfirmationMail", array($clientData, $siteData, $params));
}

0 个答案:

没有答案