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

CoffeeScript function for Jasmine testing - parenthesis are weird

本文关键字:测试 CoffeeScript 函数 Jasmine      更新时间:2023-09-26

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

CoffeeScript对空白非常敏感。此:

f(x).g()

解析方式与JavaScript相同:没有空格意味着f(x)中的括号是"函数调用"括号。此:

f (x).g()

但是,被解析为:

f((x).g())

所以空格表示CCD_ 3中的括号是"表达式分组"括号。方法名称及其参数之间的空格完全改变了代码的含义。

你可能想这么说:

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

甚至:

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

经验法则是永远不要在函数名(或if)和带括号的参数之间留空格。