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