【问题标题】:PHPUnit and Zend: Testing a function on a controller?PHPUnit 和 Zend:在控制器上测试函数?
【发布时间】:2013-09-28 05:41:11
【问题描述】:

我有一个名为“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?

【问题讨论】:

    标签: zend-framework phpunit


    【解决方案1】:

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

    $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

    【讨论】:

      猜你喜欢
      • 2011-08-08
      • 2015-03-24
      • 2014-07-22
      • 2014-02-10
      • 2012-07-17
      • 2014-09-25
      • 2016-01-31
      • 2012-04-18
      • 2015-12-11
      相关资源
      最近更新 更多