2010-06-15 103 views
0

我正在潜入单元测试的世界。而我有点失落。我今天了解到,单元测试正在测试函数是否正常工作。关于单元测试zend框架中的函数和单元测试一般

我想测试以下功能:

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返回事件。

回答

3

嗯,一种方法是通过重载你正在测试的对象。然后,您可以重写getResource()方法以返回一个“模拟”对象(总是表现确定的行为,并且您可以为每个测试“设置”)。诀窍是隔离你想测试的功能,并删除任何可能妨碍你的依赖(在你的案例中为getResource方法)...

我建议阅读一些教程(不只是一个,数),并试图了解哲学和方法论...

一些教程:

Zend Developer Zone

PHP Unit Slideshow

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

DevShed

+0

感谢所有的信息。我还需要这么多的阅读! – sanders 2010-06-16 06:42:10