Je suis en train d'écrire un jasmin test en coffeescript qui utilise un beforeEach bloc. Cela heurte à un problème avec coffeescript de la variable de portée. Voici ce que je voudrais écrire:
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'})
Cela ne fonctionne pas, bien que, parce que l' scope
et $browser
obtiendrez déclaré avec var
au plus profond de la portée. C'est, une fois dans l' beforeEach
puis à nouveau en it
bloc. Je peux forcer les variables déclarées dans la bonne portée par l'initialisation, mais cela semble très étrange:
describe 'PhoneDetailCtrl', () ->
$browser = {}
scope = {}
beforeEach () ->
scope = angular.scope()
$browser = scope.$service('$browser')
it 'should fetch phone detail', () ->
scope.params = {phoneId:'xyz'}
...
Cela fonctionne, mais le javascript, il compile est en fait
describe('PhoneListCtrl', function() {
var $browser, ctrl, scope;
$browser = {};
ctrl = {};
scope = {};
où tous j'ai besoin est la ligne var $browser, ctrl, scope;
. Puis-je écrire cela de façon plus concise, en coffeescript?