测试->单元->测试->...

本文记录了作者在编写saveTag()方法及其测试用例过程中的思考与调整,探讨了如何提高单元测试的质量和降低代码耦合度。
第一次写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);
		}
这么看还真能降低耦合度


先写完测试,再写单元,发现测试不行再改单元和测试.

这个过程现在还不知道对错

记着看过一个问题:当测试用例变多的时候,单元的参数表改变,对测试的改变会很大.这个问题解决方法是什么

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值