我有一個 express.js 應用程式,我使用 jest 和 supertest-session 來測驗我的應用程式,因為我需要測驗需要用戶進行身份驗證的功能。我的測驗有異步方法并訪問一個 postgres 資料庫。
所以,我有3個測驗。可以說 test1,test2,test3。
當我在 shell 中鍵入“npx jest”時,它會運行所有測驗并且“test2”失敗。但是如果我運行'npx jest test1',然后'npx jest test2',......他們都通過了。即使它與“npx jest”運行測驗的順序相同。
在所有測驗中,我都有一個 afterAll 洗掉我的 psql 表中的所有內容。所以,如果 test2 對 'table' 做了一些事情,那么當它完成時,它只會洗掉它所做的所有事情,然后下一個測驗有一個干凈的表。但是,當運行“npx jest”時,它會運行所有測驗,并且另一個測驗會選擇另一個測驗創建的導致失敗的行(它應該使用空表)。
我運行了創建這個流氓 psql 行的測驗,然后檢查了我的 psql 表,它里面什么都沒有。
'npx jest' 是否只是同時運行這些測驗?如果是這樣,我怎樣才能讓它不會。
謝謝你。
uj5u.com熱心網友回復:
讓我在這里給出一個共同的評論......主要問題不是并發機制,而是測驗本身。任何單元測驗的主要標準之一是獨立性;這意味著測驗不應與其他測驗共享其狀態。如果測驗一項一項通過,但在一般發布時未通過……它們不是單元測驗。很高興你找到了擺脫這種情況的方法runInBand,但支持它會變得越來越痛苦,你能做的最好的事情就是打破依賴關系。為什么你真的需要寫'table'?你為什么不嘲笑它?它可以讓你不關心洗掉測驗資料。一個清晰的測驗,并發沒有問題。
uj5u.com熱心網友回復:
在我看來,Jest 確實同時運行測驗。
所以,npx jest --runInBand解決了這個問題,我不需要npx jest testX為每個測驗運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/494266.html
上一篇:單元測驗模擬資料庫回傳Null
