Я пытаюсь написать тест на жасмин в 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'})
Однако это не работает, потому что область
и $ 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?