问题:在CoffeeScript中是否可以手动声明变量?
我正在开始进行CoffeeScript的单元测试,并在教程中遇到了使用before()
和after()
函数的情况。虽然你可以在JavaScript中声明变量,但在CoffeeScript中似乎无法这样做。
一种(但不是最佳实践)解决方案是将它们添加到window对象中(像这样)。我正在使用的代码来自于http://sinonjs.org/。
这是我正在测试的代码:
describe 'Fake server', ->
before(() -> server = sinon.fakeServer.create())
after(() -> server.restore())
it "calls callback with deserialized data", () ->
callback = sinon.spy()
getTodos(42, callback)
# This is part of the FakeXMLHttpRequest API
server.requests[0].respond(
200,
{ "Content-Type": "application/json" },
JSON.stringify([{ id: 1, text: "Provide examples", done: true }])
)
assert(callback.calledOnce)
编译成JavaScript后,before和after函数看起来像这样:
before(function() {
var server;
return server = sinon.fakeServer.create();
});
after(function() {
return server.restore();
});
正如您所看到的,变量server在before函数内部声明,因此无法在错误的作用域之外使用。
server.requests[0]
这行代码应该会失败,因为此时server
还没有被初始化,不是吗? - decezebefore()
函数之前初始化server
。 - Mathieu Brouwers