具有存根依賴性的單元測試
好的單元測試是獨立的,但程式碼通常具有依賴性。我們使用各種測試雙精度來刪除測試的依賴性。最簡單的測試雙打之一是存根。這是一個帶有硬編碼返回值的函式,代替現實世界的依賴。
// Test that oneDayFromNow returns a value 24*60*60 seconds later than current time
let systemUnderTest = new FortuneTeller() // Arrange - setup environment
systemUnderTest.setNow(() => {return 10000}) // inject a stub which will
// return 10000 as the result
let actual = systemUnderTest.oneDayFromNow() // Act - Call system under test
assert.equals(actual, 10000 + 24 * 60 * 60) // Assert - Validate expected result
在生產程式碼中,oneDayFromNow
會呼叫 Date.now()
,但這會導致不一致和不可靠的測試。所以在這裡我們將其刪除。