用于Jasmine测试的CoffeeScript函数 - 括号很奇怪

时间:2013-08-26 00:29:26

标签: javascript coffeescript jasmine

我的第一个测试工作是使用纯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而且我不确定将参数传递给函数的正确方法。

1 个答案:

答案 0 :(得分: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)与其带括号的参数之间放置空格。