如何进行高效JavaScript单元测试

发表于:2011-12-08 10:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Hazem Saleh    来源:51Testing软件测试网采编

分享:

  ApplicationUtilTest对象通过JsTestDriver TestCase对象创建。如果您熟悉JUnit框架,那么您肯定熟悉setUp和testXXX方法。setUp方法用于初始化测试用例。对于本例,我使用该方法来声明一个HTML片段,该片段将用于其他测试用例方法。

  DOC注释是一个JsTestDriver惯用语,可以用于轻松声明一个HTML片段。

  在testValidateLoginFormBothEmpty方法中,创建了一个ApplicationUtil对象,并在测试用例方法中使用该对象。然后,代码通过检索用户名和密码的DOM元素并将它们的值设置为空值来模拟输入空用户名和密码。可以调用validateLoginForm方法来执行实际表单验证。最后,将调用assertEquals来确保usernameMessage 和 passwordMessage span元素中的消息是正确的,即:This field is required。

  在JsTestDriver中,可以使用以下构件:

  ● fail ("msg"):表明测试一定会失败,消息参数将显示为一条错误消息。
  ● assertTrue ("msg", actual):断定实际参数正确。否则,消息参数将显示为一条错误消息。
  ● assertFalse ("msg", actual):断定实际参数错误。否则,消息参数将显示为一条错误消息。
  ● assertSame ("msg", expected, actual):断定实际参数与预期参数相同。否则,消息参数将显示为一条错误消息。
  ● assertNotSame ("msg", expected, actual):断定实际参数与预期参数不相同。否则,消息参数将显示为一条错误消息。
  ● assertNull ("msg", actual):断定参数为空。否则,消息参数将显示为一条错误消息。
  ● assertNotNull ("msg", actual):断定实际参数不为空。否则,消息参数将显示为一条错误消息。

  其他方法的代码包含其他测试用例。清单 4 显示了测试用例对象的完整代码。

  清单 4. ApplicationUtil 对象完整代码

  • ApplicationUtilTest = TestCase("ApplicationUtilTest");  
  •  
  • ApplicationUtilTest.prototype.setUp = function () {  
  • /*:DOC += <FORM action=""><table><tr><td>Username</td><td> 
  • <input type="text" id="username"/></td><td><span id="usernameMessage"> 
  • </span></td></tr><tr><td>Password</td><td> 
  • <input type="password" id="password"/></td><td><span id="passwordMessage" 
  • ></span></td></tr></table></FORM>*/  
  • };  
  •  
  • ApplicationUtilTest.prototype.testValidateLoginFormBothEmpty = function () {  
  •     var applicationUtil = new appnamespace.ApplicationUtil();  
  •       
  •     /* Simulate empty user name and password */  
  •     document.getElementById("username").value = "";  
  •     document.getElementById("password").value = "";   
  •       
  •     applicationUtil.validateLoginForm();  
  •       
  •     assertEquals("Username is not validated correctly!", "This field is required",   
  •     document.getElementById("usernameMessage").innerHTML);  
  •     assertEquals("Password is not validated correctly!", "This field is required",   
  •     document.getElementById("passwordMessage").innerHTML);    
  • };  
  •  
  • ApplicationUtilTest.prototype.testValidateLoginFormWithEmptyUserName = function () {  
  •     var applicationUtil = new appnamespace.ApplicationUtil();  
  •       
  •     /* Simulate empty user name and password */  
  •     document.getElementById("username").value = "";  
  •     document.getElementById("password").value = "anyPassword";    
  •       
  •     applicationUtil.validateLoginForm();  
  •       
  •     assertEquals("Username is not validated correctly!",   
  •     "This field is required", document.getElementById("usernameMessage").innerHTML);  
  •     assertEquals("Password is not validated correctly!",   
  •     "", document.getElementById("passwordMessage").innerHTML);    
  • };  
  •  
  • ApplicationUtilTest.prototype.testValidateLoginFormWithEmptyPassword = function () {  
  •     var applicationUtil = new appnamespace.ApplicationUtil();  
  •       
  •     document.getElementById("username").value = "anyUserName";  
  •     document.getElementById("password").value = "";   
  •       
  •     applicationUtil.validateLoginForm();  
  •       
  •     assertEquals("Username is not validated correctly!",   
  •     "", document.getElementById("usernameMessage").innerHTML);  
  •     assertEquals("Password is not validated correctly!",   
  •     "This field is required", document.getElementById("passwordMessage").  
  •     innerHTML);   
  • };
  • 53/5<12345>
    100家互联网大公司java笔试题汇总,填问卷领取~

    精彩评论

    • dodmk
      2014-2-20 14:25:02

      没完全看懂~!

    • caixusheng
      2011-12-08 17:14:35

      楼主没讲清楚具体要点,最后的解决办法能不能再补充详细点啊,谢谢

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号