2 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
最簡(jiǎn)單的方法是刪除使用this并在describe()回調(diào)范圍內(nèi)聲明一個(gè)變量:
describe('tests', () => {
let dom;
beforeEach(async () =>
Promise.resolve('foo').then(result => {
dom = result;
})
);
it('works', () => {
console.log(dom); // => foo
});
});

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
您在承諾和測(cè)試回調(diào)函數(shù)中使用箭頭函數(shù)。then
it
在箭頭函數(shù)之前,每個(gè)新函數(shù)都根據(jù)函數(shù)的調(diào)用方式定義了自己的 this 值:
在構(gòu)造函數(shù)的情況下是一個(gè)新對(duì)象。
在嚴(yán)格模式函數(shù)調(diào)用中未定義。
如果函數(shù)被稱為“對(duì)象方法”,則為基礎(chǔ)對(duì)象。
所以你的代碼的問(wèn)題是在測(cè)試的回調(diào)箭頭函數(shù)this
的范圍內(nèi)是指describe
塊的父范圍。
箭頭函數(shù)沒有自己的
this
. 使用封閉詞法范圍的 this 值;箭頭函數(shù)遵循正常的變量查找規(guī)則。因此,在搜索當(dāng)前范圍內(nèi)不存在的 this 時(shí),箭頭函數(shù)最終會(huì)從其封閉范圍中找到 this。
作為一種選擇,您可以在塊的父范圍內(nèi)定義變量并在回調(diào)describe
中使用它。beforeAll
it
添加回答
舉報(bào)