En Javascript, contaminar el espacio de nombres global generalmente se considera como algo malo. Es por eso que Coffeescript envuelve todo su Javascript en un contenedor (function() {}).call(this);
.QUnit + coffeescript scope
Sin embargo, he comenzado a escribir pruebas de QUnit para mi código de Coffeescript, y QUnit se queja de que no puede encontrar mis funciones.
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
Me gustaría probar las variables sin contaminar el espacio de nombres global. ¿Cuál es una buena manera de hacer esto?
aquí está el Javascript generada Quiero poner a prueba:
(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);
y mi archivo Test.js es:
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"));
});
Gracias, Kevin
un código de ejemplo sería útil. –
Hola Aaron, he añadido un ejemplo. –