2012-04-27 38 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」)和其他示例。