2016-01-07 3 views
0

Вопрос: Можно ли вручную объявить переменную в CoffeeScriptCoffeeScript - Вручную объявить переменную

Я в настоящее время, начиная с модульное тестирование для CoffeeScript, идя через учебник я пришел к точке, где я должен был используйте функции before() и after(). Хотя вы можете объявить переменную в JavaScript там, где она должна быть, вы не можете сделать это в CoffeeScript afaik. Одним из решений (но не лучшей практики) было бы добавить их в объект окна (like this). Код, с которым я работаю, составляет от 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(function() { 
    var server; 
    return server = sinon.fakeServer.create(); 
}); 
after(function() { 
    return server.restore(); 
}); 

Итак, как вы видите, переменные сервера объявленные в функции before, и поэтому не могут использоваться за пределами неправильной области.

+0

Ошибка 'server.requests [0]', поскольку 'server' не инициализируется в этой точке, no ...!? – deceze

+0

Это правильно, и я, похоже, не работаю, но проблема в том, что решение, о котором вы говорили, отлично работает (по другому коду) с тем же до, после структуры. Именно для этого отказа мне нужно инициализировать 'server' перед функцией' before() ' –

ответ

2
server = undefined # or null, or false 
before -> server = ... 
after -> server.restore 

В то время как в JavaScript, вы можете сделать var foo; в CoffeeScript вам нужно назначить что-то создать переменную. Но так как var foo; означает, что значение foo равно undefined, просто назначьте undefined, чтобы создать тот же эффект.

+0

Спасибо, это то, что я искал. Я попробовал сервер = null, прежде чем он не работал. Но с этим пониманием я знаю, что это должен быть мой код, который ошибочен. –

Смежные вопросы