单元测试3之单元测试中桩的引用

一、发现问题

1. 在注册新会员界面,

打开source-->source-->172.16.200.128-->ecshop-->js-->user.js;  ctrl+f,查checkEmail();
当email变量不为空时,该函数会调用Utils.isEmail()函数(Util是js文件,isEmail是该文件中的一个函数)

例一:
>checkEmail("[email protected]"); //该邮箱是合法有效的
回显undefined, 前台界面上显示邮箱已存在请重新输入
例二:
>checkEmail(“skinapi”); //该邮箱不是合法有效的
回显false, 前台界面上显示邮箱地址不合法

2.当checkEmail()函数通过不了时,如何判定是isEmail()函数没通过,还是checkEmail()函数本身没通过

在注册新会员界面,打开source–>source–>172.16.200.128–>ecshop–>js–>utils.js; ctrl+f,查isEmail();
可以看到该函数,将该函数复制一份到记事本,将该函数返回值设为true,在console控制台输入:
>Utils.isEmail = function( email )
>{ return true;
> }
>checkEmail(“skinapi”);
回显:undefined,在注册界面,Email空栏后是:可以注册
因为skinapi不是合法邮箱,应该回显false,

二、解决问题

1.初次尝试,找出出问题的部分

注册页面刷新一下,在console控制台输入:
例二:

>if(checkEmail("skinapi") == false)
>	alert("testcase 001 pass!");
> else
>  ("testcase 001 fall!");
回显:testcase 001 pass!

例三:再来执行一下

>Utils.isEmail	=	function(	email	)
>{		return true;
>	}
>if(checkEmail("skinapi") == false)
>	alert("testcase 001 pass!");
> else
>  ("testcase 001 fall!");
回显:undefined,在注册界面,Email空栏后是:可以注册

由例二、例三对比可得出以下结论:

>Utils.isEmail	=	function(	email	)
>{		return true;
>	}
这一部分有问题,

2.处理有问题的那一部分

将要测试的函数中的子函数设定为完全是正确的,然后再测试函数就可以测试出函数的正确与否
注册页面刷新一下,在console控制台输入:
例一:

Utils.isEmail = function( email )
{ if(email == “skinapi”)
retuen false;
return true;
}
if(checkEmail(“skinapi”) == false)
alert(“testcase 001 pass!”);
else
(“testcase 001 fall!”);
回显: 在注册界面,出现一个小框内容是:testcase 001 pass!

回显正确,因为在Utils.isEmail函数中,将所收到的数据进行了正确的判断处理,该函数返回一个完全正确的结果,该函数不会影响到checkEmail的测试,
所以如果上面代码出问题,一定是checkEmail的问题

例二:

>Utils.isEmail	=	function(	email	)
>{ if(email == "[email protected]")
		retuen  true;	
	return false;
>	}
>if(checkEmail("[email protected]") == false)
>	alert("testcase 001 fall!");
> else
>  ("testcase 001 pass!");

三、总结

将子函数替换为完全正确的一个函数,如例二前五行所示。这五行对isEmail()函数的重写叫做“桩”

shift+"空格"将输入法切换到全角模式就可以正常输入空格

猜你喜欢

转载自blog.csdn.net/qq_35797918/article/details/86646336
今日推荐