我想在使用beforeEach塊的coffeescript中編寫一個茉莉花測試。這會導致coffeescript變量範圍的問題。這裏是想我寫:如何在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寫得更簡潔嗎?
我認爲把初始化器保持在頂端是很好的。 – 2011-11-04 06:29:29