測試->單元->測試->...

第一次寫saveTag()的測試用例是這樣(想saveTag相關想了很長時間):

public function testSaveTag(){
			$item = new Item();
			$tagname = 'exp1';
			$this->assertInstanceOf('Item',$item);
			list($item_id,$tag_id) = ItemsController::saveTag($item,$tagname);
			
			// get the Item just saved
			$item->id = $item_id;
			$item_data = $item->read();
			$tagnames = array();
			foreach($item_data['Tag'] as $tag){
				$tagnames[] = $tag['name'];
			}
			$this->assertContains($tagname,$tagnames);
		}

寫測試用例時沒有具體的想明白saveTag(),寫出來的saveTag():

public static function saveTag($item,$tagname){
			$tag = $this->Item->Tag->findByName($tagname);
			if($tag){
				$this->request->data['Tag']['id'] = $tag['Tag']['id'];
				$this->Item->hasAndBelongsToMany['Tag']['unique'] = false;
				$item->save($this->request->data);
			}
			return list($item->id,$tag->id);
		}
而request->data又是add() action中用戶提交的數據,在testSaveTag()中沒法使用了.

於是再修改:

public static function saveTag($item,$tagname,$data){
			$tag = $this->Item->Tag->findByName($tagname);
			if($tag){
				$data['Tag']['id'] = $tag['Tag']['id'];
				$this->Item->hasAndBelongsToMany['Tag']['unique'] = false;
				$item->save($data);
			}
			return list($item->id,$tag->id);
		}
這麼看還真能降低耦合度


先寫完測試,再寫單元,發現測試不行再改單元和測試.

這個過程現在還不知道對錯

記着看過一個問題:當測試用例變多的時候,單元的參數表改變,對測試的改變會很大.這個問題解決方法是什麼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章