我想为发送邮件创建单元测试。 这似乎是一个简单的测试,但我做不到。
现在,当我运行测试时,返回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));
}