0

これについて Stackoverflow で多くの議論が行われていることは知っていますが、それについて直接的な答えを得ることができませんでした。そして、私はコーヒースクリプトについてあまり知りません。

基本的に、私はこのコーヒースクリプトを持っています

return42 = -> 42

そして、コンパイルすると、これが得られます


(function() {
  var return42;

  return42 = function() {
    return 42;
  };

}).call(this);

そのため、世界に公開されていない無名関数にラップされている関数です。だから私がこのテストを書くとき


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

return42() が定義されていないため、テストは失敗します。どうすればこれを解決できますか。

どうもありがとうございました。:-)

4

2 に答える 2

1

プログラムへのエントリポイントとしてグローバル変数が必要です。これは、関数をローカルにするのではなく、グローバルオブジェクトにアタッチすることで実現できます。代わりにこれを試してください:

@return42 = -> 42

それはあなたに与えるでしょう:

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

これをブラウザでのみ実行し、Node.jsで実行していない場合は、両方ともこの場合はグローバルオブジェクトですが、windowの代わりにアタッチする方が少し慣用的です。this

于 2011-11-23T13:04:55.743 に答える
0

ジミーは正しいですが、関数を公開する必要がない場合は、テストする必要はないと付け加えます。代わりに、その関数を使用する公開 API をテストしてください。パブリック API がプライベート実装に依存している限り、プライベート関数も失敗するとテストは失敗するはずです。

于 2011-12-01T02:04:37.557 に答える