Posted on 2008-05-16 11:33
子期 阅读(181)
评论(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之间函数调用效率特别的低下,所以建议大家需要使用这种模式的时候要考虑清楚,如果可以避免还是尽量避免。
本代码提供一个示范的作用,并没有提供很详细的注释,如果在测试中有什么问题可以和本人联系。源代码