我注意到Karma我的Angular構建的默認行為Jasmine是以隨機順序運行單元測驗。以隨機順序運行測驗與每次都以相同順序運行測驗有什么好處?
uj5u.com熱心網友回復:
有時測驗會修改不會在每次測驗運行時重置的狀態。也許一個測驗修改了一個由所有測驗共享的全域變數。也許一個測驗向資料庫寫入了一些東西,并且在測驗完成時沒有清理它。這些事情不應該發生,但有時確實會發生。
例如:
// Stupid contrived example. Don't ever do this.
let num = 0
it('A', () => {
expect(num 1).toEqual(1)
})
it('B', () => {
num = 10
expect(num 2).toEqual(12)
})
it('C', () => {
expect(num 3).toEqual(13) // passes if B is run before C, otherwise fails
})
如果你總是運行測驗 A,然后是 B,然后是 C,這可能會很好。但是如果你只運行測驗 C,我會發生奇怪的事情。由于測驗 A 和 B 所做的更改,當你一起運行它們時,C 通過了。但是然后你單獨運行測驗 C 并且它失敗了。
現在你盯著你的終端輸出傻眼了,“測驗C怎么會失敗?!它剛剛通過了!”
隨機化順序有助于解決這個問題。每個測驗都應該完全隔離,它們運行的??順序無關緊要。隨機化它們可能有助于發現這種壞處。
那么,既然順序無關緊要,那為什么不隨機化順序呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/464433.html
標籤:javascript 打字稿 单元测试
