我讀過很多Zend控制器測試教程,但我找不到解釋如何測試使用模型和嘲笑這些模型的控制器。單元測試Zend控制器模擬模型和服務
我有以下控制措施: -
function indexAction(){
// Get the cache used by the application
$cache = $this->getCache();
// Get the index service client and model
$indexServiceClient = new IndexServiceClient($this->getConfig());
$indexModel = $this->_helper->ModelLoader->load('admin_indexmodel', $cache);
$indexModel->setIndexServiceClient($indexServiceClient);
// Load all the indexes
$indexes = $indexModel->loadIndexes();
$this->view->assign('indexes', $indexes);
}
目前,我有一個非常基本的測試案例: -
public function testIndexActionRoute() {
$this->dispatch('/admin/index');
$this->assertModule('admin', 'Incorrect module used');
$this->assertController('index', 'Incorrect controller used');
$this->assertAction('index', 'Incorrect action used');
}
這個測試工作,但它調用了真正的模型和服務,這有時意味着它超時並在測試環境中失敗。爲了正確地進行單元測試,我需要對IndexServiceClient和IndexModel進行嘲笑和期望 - 這是如何完成的?
在與我的同事們討論後,得出了同樣的結論。使用適當的模擬對控制器進行單元測試需要付出很大的努力,回報很少。尤其是我們的模型層完成了大部分工作,並且具有廣泛的測試覆蓋範圍,而控制器非常薄。 – 2009-11-12 11:09:08