我的第一个测试工作是使用纯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而且我不确定将参数传递给函数的正确方法。
答案 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
)与其带括号的参数之间放置空格。