Область действия QUnit + coffeescript

В Javascript загрязнение глобального пространства имен обычно считается плохим явлением. Вот почему Coffeescript помещает весь ваш Javascript в оболочку (function () {}). Call (this); .

Однако я начал писать тесты QUnit для своего кода Coffeescript, и 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"));
});

Спасибо, Кевин

6
задан Kevin Burke 25 June 2011 в 17:59
поделиться