【问题标题】:About unit testing a function in the zend framework and unit testing in general关于在zend框架中对一个函数进行单元测试和一般的单元测试
【发布时间】:2010-06-15 16:19:44
【问题描述】:

我正在潜入单元测试的世界。我有点迷路了。我今天了解到,单元测试是测试一个功能是否有效。

我想测试以下功能:

public function getEventById($id)
{
    return $this->getResource('Event')->getEventById($id);
}

所以我想测试这个功能如下:

public function test_Event_Get_Event_By_Id_Returns_Event_Item()
{
    $p = $this->_model->getEventById(42);
    $this->assertEquals(42, EventManager_Resource_Event_Item_Interface);
    $this->assertType('EventManager_Resource_Event_Item_Interface', $p);
}

然后我得到了错误:

1) EventTest::test_Event_Get_Event_By_Id_Returns_Event_Item
Zend_Db_Table_Exception: No adapter found for EventManager_Resource_Event

/home/user/Public/ZendFramework-1.10.1/library/SF/Model/Abstract.php:101
/var/www/nrka2/application/modules/eventManager/models/Event.php:25

但是后来有人告诉我,我目前正在进行单元测试,而不是进行集成测试。所以我认为我必须以不同的方式测试函数 getEventById。但我不明白怎么做。 这个函数的作用只是调用一个资源并通过 id 返回事件。

【问题讨论】:

    标签: php unit-testing zend-framework phpunit


    【解决方案1】:

    嗯,一种方法是重载您正在测试的对象。然后,您可以覆盖 getResource() 方法以返回一个“模拟”对象(一个始终具有确定性行为的对象,并且您可以为每个测试“设置”该对象)。诀窍是隔离您要测试的功能,并删除可能妨碍您的任何依赖项(您的案例中的 getResource 方法)...

    我建议阅读一些教程(不仅仅是一个,几个),并尝试理解其中的哲学和方法...

    一些教程:

    Zend Developer Zone

    PHP Unit Slideshow

    Pragmatic Unit Testing(注意,这是针对C#的,但概念应该相同)

    DevShed

    【讨论】:

    • 感谢您提供的所有信息。我还需要大量阅读!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多