2012-04-27 51 views
1

对测试函数的名称是否有任何限制?JsTestDriver,测试函数的名称

当我将以下内容写为testA()testB()时,它们都会被执行。

AjaxCreateTest = TestCase("AjaxCreateTest"); 
AjaxCreateTest.prototype.testA = function(){}; 
AjaxCreateTest.prototype.testb = function(){}; 

但如果我从“TESTB”到“AjaxCreateT”改名字,只是testA()将实施。太奇怪了。有人可以帮忙吗?

回答

3

JsTestDriver只执行以前缀“test”开头的方法。这是一个命名约定,使您能够在未作为测试执行的相同对象上编写助手方法。

也有两个保留的方法名称和setUptearDown,这将在每次测试后分别被执行。

你甚至可以使用的空间在您的测试名,这使得您的测试可读很好,例如:

TestCase("AjaxCreateTest", { 
    setUp : function() { 
     this.subject = new MyAjaxCode(); 
     this.stubXHR(); 
    }, 

    tearDown : function() { 
     this.restoreXHR(); 
    }, 

    stubXHR : function() { 
     // stub global objects to intercept Ajax calls 
    }, 

    restoreXHR : function() { 
     // restore global state 
    }, 

    "test should say hi" : function() { 
     assertEquals("Hi", this.subject.sayHi()); 
    } 
} 

在上面的例子中,只有一个测试,其余的都是辅助方法。

我可以推荐Sinon.JS帮助您存储Ajax调用(请参阅“假XHR”)和其他示例。