無論您使用的測試框架如何,無論您是在編寫客戶端還是服務器端單元測試,採用某種「名稱約定」的主要關注點都是爲了確保測試名稱清楚地向所有人說明什麼是系統和被測試的行爲。
假設我們要測試的這款代碼:
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() {});
這樣,每個測試有一個明確的目的,根據需要,他們將保留作爲小,而當一次測試失敗,很容易理解代碼中哪些部分受到最新更改的影響。
好的標準是你所在團隊的所有成員都同意這將幫助每個人找到並解決錯誤,並幫助他們編寫更好的單元測試。
非常感謝@Justin的代碼格式。 我沒有看到那些阻止格式化的隱藏字符,但是您在那裏發現了它們! :-) – jfoliveira