0

最初のテストはプレーンな JavaScript で動作するようになり、次に同じテストを CoffeeScript で記述してみようとしました。

括弧が思い通りに出てこないため、テストが失敗します...エラーは次のとおりです。TypeError: Object 1.00 has no method 'toBe'

私の動作中の JavaScript テストは次のとおりです。

describe( "conversion from water to coffee", function () {  
  it("converts water to coffee", function () {  
    expect(waterToCoffeeCalc(17)).toBe('1.00');  
  }); 
});

私のCoffeeScriptのバージョンは次のとおりです。

describe "coversion from water to coffee", ->
  it "coverts water to coffee", ->
    expect (waterToCoffeeCalc 17).toBe('1.00')

この CoffeeScript は次のようにコンパイルされます。

// Generated by CoffeeScript 1.6.3
describe("coversion from water to coffee", function() {
  return it("coverts water to coffee", function() {
    return expect((waterToCoffeeCalc(17)).toBe('1.00'));
  });
});

括弧の問題はわかりますが、CoffeeScript を学習したばかりで、引数を関数に渡す正しい方法がわかりません。

4

1 に答える 1

0

CoffeeScript は空白に非常に敏感です。これ:

f(x).g()

は JavaScript と同じように解析されます。スペースがない場合、 の括弧f(x)は「関数呼び出し」の括弧であることを意味します。これ:

f (x).g()

ただし、次のように解析されます。

f((x).g())

したがって、スペースは、括弧f (x)が「式のグループ化」括弧であることを意味します。メソッド名とその引数の間のスペースは、コードの意味を完全に変えます。

おそらく次のように言いたいでしょう。

expect(waterToCoffeeCalc 17).toBe('1.00')

あるいは:

expect(waterToCoffeeCalc(17)).toBe('1.00')

経験則として、関数名 (またはさらに言えばif) とその括弧で囲まれた引数の間にスペースを入れないでください。

于 2013-08-26T01:42:03.740 に答える