具有存根依賴性的單元測試

好的單元測試是獨立的,但程式碼通常具有依賴性。我們使用各種測試雙精度來刪除測試的依賴性。最簡單的測試雙打之一是存根。這是一個帶有硬編碼返回值的函式,代替現實世界的依賴。

// 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(),但這會導致不一致和不可靠的測試。所以在這裡我們將其刪除。