Я пытаюсь написать тест жасмина в 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?