共有サンプルを抽出してジャスミンテストをDRYしようとしています。jasmineの共有仕様coffeescriptのスコープの問題
@sharedExamplesForThing = (thing) ->
beforeEach ->
@thingy = new thing
it "is neat", ->
expect(@thingy.neat).toBeTruthy()
describe "widget with shared behavior", ->
sharedExamplesForThing(-> new Widget)
これは、すべてが1つのファイルで定義されている場合にうまく機能します。私が遭遇している問題はsharedExamplesを別のファイルに移動しようとするときに発生します。私はCan't find variable: sharedExamplesForThing ...
だから、デバッグの利益のために、私は次のことを試してみました取得:
describe "widget with shared behavior", ->
it "is acting like a meany", ->
console.log sharedExamplesForThing
expect(false).toBeTruthy()
sharedExamplesForThing(-> new Widget)
is acting like a meany
ブロックでは、ログは[Function]
としてsharedExamplesForThing
示していますが、私はまだit
外Can't find variable
を取得します。これが私の現在の経験の範囲外の問題に関連するかもしれないような気がしますが、私はそれについて完全に間違っている可能性があります。私はここで何が欠けていますか?あなたはそれがグローバルオブジェクト(ブラウザでwindow
)のプロパティとして割り当てられているのCoffeeScriptのトップレベルのメンバ変数を割り当てる場合
あなたのブログの記事は非常に不完全です。最初に、あなたがそこで話している 'sharedBehaviorForGameOf'を見逃しています。そして、私はあなたのものをほぼ100%複製したテスト仕様ファイルを持っています。正確な階層であっても、' it() 'ブロック'describe()'ブロックは、私の "共有"変数は私の最初のテストでしか見えず、最初のテストの下の他のテストでは参照できません。私はあなたの記事を完成させ、共通のvars /関数についていくつかのヒントを与えるなら、私のような人々はほっとすると思います。それに、あなたは図書館で素晴らしい仕事をしてくれました。私はそれを愛しています。 – dimitarvp
実際の(嘲笑されていない)AJAX呼び出しの結果を消費する 'runs()'ブロックで共有変数を使用しようとしています。明らかにバニラの例がかなりうまく機能するので、おそらくそれはスコープ上の問題です。 – dimitarvp