我剛剛在TypeScript使用jestand的專案中撰寫測驗時遇到了一個非常奇怪的行為PhpStorm。
我做了一個簡化的例子來說明這個問題:

解釋發生了什么:
我運行了 3 次測驗:
第一次使用所有行和除錯器時,它在第 14 行失敗,它不應該,因為此時應該仍然存在。
mutatedfalse第二次用第15 行注釋掉和除錯器。它成功了之前失敗的地方。
使用所有行但沒有除錯器,它成功了。
所以這里的重點不是討論在 getter 中發生突變是好是壞。
關鍵是要理解為什么第15行執行之前的線14時,除錯器是活動的?
我把代碼放在下面,這樣你就可以更容易地閱讀它:
class Foo {
public mutated: boolean = false;
public get getMe(): string {
this.mutated = true;
return 'me';
}
}
test('state of mutated', () => {
const foo = new Foo();
expect(foo.mutated).toEqual(false);
expect(foo.getMe).toEqual('me');
expect(foo.mutated).toEqual(true);
});
謝謝你的幫助。
uj5u.com熱心網友回復:
執行順序不是問題 - 呼叫以正確的順序執行。這是一個不同的問題:在設定 | 中啟用變數視圖中啟用自動運算式。構建、執行、部署 | 除錯器 | 資料視圖中,一旦遇到斷點,除錯器會嘗試評估運算式以計算變數值。所以它評估foo.getMe- 結果,foo.mutated變成true了,測驗失敗了。
我不確定這是否可以被視為錯誤或預期行為。我只能建議在處理像您這樣的代碼時禁用此選項
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/322004.html
