Анонимная функция в Coffeescript, как это проверить - PullRequest
0 голосов
/ 23 ноября 2011

Я знаю, что в Stackoverflow много дискуссий об этом, но я не мог получить прямой ответ по этому поводу. И я не знаю много кофеинскриптов.

В основном, у меня есть этот coffeescript

return42 = -> 42

И когда я компилирую, я получаю это


(function() {
  var return42;

  return42 = function() {
    return 42;
  };

}).call(this);

Итак, функция обернута в анонимную функцию, которая не доступна миру. Поэтому, когда я пишу этот тест


describe "Test number", ->
    it "is 42", ->
        expect(return42()).toBe 42

Тест не пройден, так как return42 () не определен. Как я мог решить это.

Большое спасибо. : -)

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Вам нужна глобальная переменная в качестве точки входа в вашу программу.Вы можете сделать это, прикрепив свою функцию к глобальному объекту вместо того, чтобы оставить его локальным для функции.Попробуйте это вместо этого:

@return42 = -> 42

, что даст вам:

(function() {
  this.return42 = function() {
    return 42;
  };
}).call(this);

Если вы запускаете это только в браузере, а не в Node.js, это будет немного более идиотскимприсоединить к window вместо this, даже если они оба являются глобальным объектом в этом случае.

0 голосов
/ 01 декабря 2011

Хотя Джимми прав, я бы добавил, что если вам не нужно выставлять функцию, вам не нужно ее тестировать. Вместо этого протестируйте публичные API, которые используют эту функцию. До тех пор, пока ваш публичный API зависит от ваших частных реализаций, тогда тесты должны проваливаться, если закрыты и частные функции.

...