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 回答