0

我有一个名为“SiteController”的控制器。上面有一个显示首页的普通 indexAction。对此进行测试相当容易,但我将如何测试另一个不是带参数操作的函数。假设我有一个名为“sendMail($to, $message)”的函数。我该如何测试?

<?php

class ControllerTest extends Zend_Test_PHPUnit_ControllerTestCase
{

    public function testShowCallsServiceFind()
    {
        $this->dispatch('/index'); // dont care about this...

        // what I need is a way to do this:
        $res = $controller->sendMail("bla", "bla"); // so that I can test sendMail? 

    }
}

如何测试 sendMail?

4

1 回答 1

0

您实际上不需要调用调度方法,您可以新建一个控制器对象并直接调用方法:

$controller = new \My\Controller();

$actual_result = $controller->sendMail($params);

$this->assertEquals($expected_result, $actual_result);

不过要小心,您需要“模拟”您的依赖项,这样您在运行测试时实际上不会发送真正的电子邮件!http://phpunit.de/manual/3.0/en/mock-objects.html

于 2013-09-27T21:41:11.540 回答