在JavaScript污染全局命名空間通常被認爲是一件壞事。這就是爲什麼Coffeescript將所有Javascript包裝在一個(function() {}).call(this);
包裝中。QUnit + coffeescript範圍
但是,我已經開始爲我的Coffeescript代碼編寫QUnit測試,QUnit抱怨說它找不到我的函數。
1. Died on test #1: getGoodNamePart is not defined
getGoodNamePart is not defined at Object.<anonymous> (file:///Users/kevin/Documents/docs/code/chrome/tests.js:2:10) at Object.run
我想在不污染全局命名空間的情況下測試變量。什麼是這樣做的好方法?
這裏是生成的JavaScript我想測試:
(function() {
getGoodNamePart = function(str) {
if (str.charAt(0) === '"') {
str.replace(/" <[^>]+>$"/g, "");
str.replace(/"/g, "");
return str;
} else if (str.charAt(0) === '<') {
str.replace(/<|>/g, "");
return str;
} else {
return str;
}
};
}).call(this);
和我的test.js文件是:
test('getGoodNamePart()', function() {
equals(getGoodNamePart("\"Kev Burke\" <[email protected]>"), "Kev Burke", "\"name\" <email> works");
equals(getGoodNamePart("", "", "empty string works"));
equals(getGoodNamePart("[email protected]", "[email protected]", "raw email works"));
return equals(getGoodNamePart("<[email protected]>", "[email protected]", "email inside carets -> carets get stripped"));
});
感謝, 凱文
一些示例代碼將是有益的。 –
嗨,亞倫,我加了一個例子。 –