Javascript では、グローバル名前空間を汚染することは一般的に悪いことと見なされています。これが、Coffeescript がすべての Javascript を(function() {}).call(this);
ラッパーでラップする理由です。
しかし、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\" <kev@inburke.com>"), "Kev Burke", "\"name\" <email> works");
equals(getGoodNamePart("", "", "empty string works"));
equals(getGoodNamePart("kev@inburke.com", "kev@inburke.com", "raw email works"));
return equals(getGoodNamePart("<kev@inburke.com>", "kev@inburke.com", "email inside carets -> carets get stripped"));
});
ありがとう、ケビン