爲什麼我們不應該用let foo = 'test'
替換beforeAll(function(){ let foo = 'test' })
?如果第二種方法很好,beforeAll
的目的是什麼?在Jasmine中beforeAll()的用途是什麼?
以下是官方定義的方式:beforeAll函數對包含它的describe塊執行一次且只執行一次beforeEach函數或任何規範之前的任何beforeAll函數。
爲什麼我們不應該用let foo = 'test'
替換beforeAll(function(){ let foo = 'test' })
?如果第二種方法很好,beforeAll
的目的是什麼?在Jasmine中beforeAll()的用途是什麼?
以下是官方定義的方式:beforeAll函數對包含它的describe塊執行一次且只執行一次beforeEach函數或任何規範之前的任何beforeAll函數。
beforeAll
塊與describe
函數範圍內的普通代碼之間存在一些實質性差異。
beforeAll
設置應該與afterAll
拆卸相結合。
before*
塊中的錯誤並不重要,並且不會妨礙填充規格列表和規格運行。 describe
塊中的錯誤將導致空白的規格列表。
before*
和it
塊有this
as the context of current spec它可以用作推薦的方式來在塊之間共享數據。它通常比來自母方範圍的簡單變量更可取,因爲沒有以這種方式交叉污染測試的風險。 describe
函數沒有這個上下文。但是,這種方法與ES6箭頭功能不兼容。
可能有茉莉花助手應該與before*
和it
塊一起工作,例如,在角測試:
beforeAll(fakeAsync(() => {
asyncInitializationThatDoesntNeedDoneCallback();
}));
如果是,應該爲整個塊來定義一個常數,那麼它一定能夠不beforeAll
定義:
describe('...',() => {
const foo = 'test'; // not let
...
});
可以。事實上,如果你想從'beforeAll'函數外部訪問'foo',你必須。 'beforeAll'是你想要在任何測試運行之前實例化的東西。 –