Как мне объявить переменную в определенной области видимости в coffeescript?
Я пытаюсь написать тест на жасмин в coffeescript, который использует блок beforeEach. Это наталкивается на проблему с областью видимости переменных coffeescript. Вот что я хотел бы написать:
describe 'PhoneDetailCtrl', () ->
beforeEach () ->
scope = angular.scope()
$browser = scope.$service('$browser')
it 'should fetch phone detail', () ->
scope.params = {phoneId:'xyz'}
$browser.xhr.expectGET('phones/xyz.json').respond({name:'phone xyz'})
ctrl = scope.$new(PhoneDetailCtrl)
expect(ctrl.phone).toEqualData({})
$browser.xhr.flush()
expect(ctrl.phone).toEqualData({name:'phone xyz'})
Это не работает, хотя, потому чтоscope
а также$browser
будет объявлено сvar
во внутренней сфере. То есть однажды вbeforeEach
а затем снова вit
блок. Я могу заставить переменные быть объявленными в правильной области видимости, инициализируя их, но это кажется очень странным:
describe 'PhoneDetailCtrl', () ->
$browser = {}
scope = {}
beforeEach () ->
scope = angular.scope()
$browser = scope.$service('$browser')
it 'should fetch phone detail', () ->
scope.params = {phoneId:'xyz'}
...
Это работает, но JavaScript, к которому он компилируется, на самом деле
describe('PhoneListCtrl', function() {
var $browser, ctrl, scope;
$browser = {};
ctrl = {};
scope = {};
где все, что мне нужно, это линияvar $browser, ctrl, scope;
, Могу ли я написать это более кратко в coffeescript?