基于frameSet的JsUnit测试

Posted on 2008-05-16 11:33 子期 阅读(182) 评论(0)  编辑  收藏 所属分类: JavaScript

在实际web应用里面很有可能需要使用到多个frameset,如果单单对具体的某个frame的函数或者对象进行测试只能保证该函数和对象的正确性。如何整合多个frame进行整合测试呢,我这里做了一些测试,希望能够给大家一些参考。

我先介绍一下我demo里面一个有3个frame,分别是tempFrame,topFrame和mainFrame。主框架是index.htm。由于JsUnit进行测试的时候需要传入一个htm的文件,所以这里传入主框index.htm,所有的测试案例都写在index.htm中。

1)调用其他frame的函数:在主框架中获取其他frame可以通过window.“frame的名称”。如:window.topFrame获取topFrame对象。我在topFrame中有一个叫addTwoNumbers的函数。为了测试这个函数我可以这样做:
function testSimpleJS()
{
 var topFrame = window.topFrame;
 assertEquals("1+1 =2", 2, topFrame.addTwoNumbers(1,1));
}

通过测试,出现美妙的绿色成功条

2)调用其他frame的对象:如果我在mainFrame里面有一个SimpleDateFormat的对象,我可以先获取mainFrame对象,然后再初始化mainFrame中的SimpleDateFormat。大概的代码如下:
var mainFrame = window.mainFrame; //获取mainFrame对象
var oSimpleDate = new mainFrame.SimpleDateFormat("YYYYDD"); //初始化对象

通过测试,出现美妙的绿色成功条

3)在frame中又调用了其他frame的对象或者函数:例如我在mainFrame中有一个函数是调用topFrame中的addTwoNumbers。,可以通过在mainFrame中加一个addTwoNumbers方法去测试。,代码如下:
function addTwoNumbers(iParam1, iParam2)
{
 return parent.topFrame.addTwoNumbers(iParam1, iParam2);
}

在index里面只要测试mainFrame中的addTwoNumbers就可以间接知道topFrame中
addTwoNumbers是否返回正确的结果。在实际的使用过程中很有可能不同的frame会频繁的相互调用,通过这样的办法就能很好的对其进行测试。

写在最后的话:通过测试,发现不同的frame之间函数调用效率特别的低下,所以建议大家需要使用这种模式的时候要考虑清楚,如果可以避免还是尽量避免。

本代码提供一个示范的作用,并没有提供很详细的注释,如果在测试中有什么问题可以和本人联系。源代码


只有注册用户登录后才能发表评论。


网站导航:
 

posts - 0, comments - 0, trackbacks - 0, articles - 16

Copyright © 子期