2013-07-24 40 views
-1

我正在爲我的JavaScript Web應用程序編寫QUnit測試。在閱讀QUnit API documentation之後,我無法找到標記模塊,測試和斷言的任何標準。QUnit模型,測試和聲明命名約定

的API說明書和實施例是相當基本的:

模塊名稱:標籤本組試驗。示例:module("group a");

測試標題:正在測試的單元的標題。示例:test("hello test", function(){});

確認消息:聲明的簡短說明。例如:ok(true, "true succeeds");

我找到的文章在那裏關於單元測試在大:What are some popular naming conventions for Unit Tests?Unit test naming best practices

但是,我希望有一個建立/普遍接受的標準是特定於QUnit的模塊 - >測試 - >斷言模式。有沒有?

回答

1

無論您使用的測試框架如何,無論您是在編寫客戶端還是服務器端單元測試,採用某種「名稱約定」的主要關注點都是爲了確保測試名稱清楚地向所有人說明什麼是系統和被測試的行爲。

假設我們要測試的這款代碼:

var MyClass = (function() { 
    function MyClass() { 
     this.defaultMessage = "Hello person without a name"; 
    } 
    MyClass.prototype.getHelloMessage = function (firstName, lastName) { 
     if (!firstName && !lastName) { 
      return this.defaultMessage; 
     } 
     var message = "Hello"; 
     if (lastName) { 
      message += " " + lastName; 
     } 
     if (firstName) { 
      if (lastName) { 
       message += ","; 
      } 
      message += " " + firstName; 
     }    
     return message; 
    };   
    return MyClass; 
})(); 

上面的代碼只是格式化一個簡單的信息與給定的輸入參數,如果有的話,如果沒有指定參數,返回一個默認的消息。

對我來說,模塊名稱將是類名和一個分離器,使測試名稱列表可讀性更強:

QUnit.module("MyClass tests - "); 

人們可以簡單的名稱測試:

test("getHelloMessage test", function() {} 

,並斷言所有的期望在一個文本中。

我更喜歡一個更詳細的方法,這將是清楚瞭解每個測試的目的:

test("getHelloMessage without input parameters should return default message", function() {}); 
test("getHelloMessage with only lastName should not display a comma", function() {}); 
test("getHelloMessage with only firstName should not display a comma", function() {}); 

這樣,每個測試有一個明確的目的,根據需要,他們將保留作爲小,而當一次測試失敗,很容易理解代碼中哪些部分受到最新更改的影響。

好的標準是你所在團隊的所有成員都同意這將幫助每個人找到並解決錯誤,並幫助他們編寫更好的單元測試。

+0

非常感謝@Justin的代碼格式。 我沒有看到那些阻止格式化的隱藏字符,但是您在那裏發現了它們! :-) – jfoliveira