蒼時弦也
優雅的 RSpec 測試 - Spy 的應用
在撰寫 RSpec 的過程中,我們大多會使用 expect
(預期)搭配 receive
(接收)來驗證某個方法有被呼叫,然而這會讓我們需要將「預期」寫在實際的行為之前,在驗證的邏輯上似乎有點奇怪,因此我們可以用 Spy 功能替代,在呼叫實際的方法後再去驗證行為。
在撰寫 RSpec 的過程中,我們大多會使用 expect
(預期)搭配 receive
(接收)來驗證某個方法有被呼叫,然而這會讓我們需要將「預期」寫在實際的行為之前,在驗證的邏輯上似乎有點奇怪,因此我們可以用 Spy 功能替代,在呼叫實際的方法後再去驗證行為。
我們已經瞭解到該如何利用 Allow 來改變一個物件的回傳,然而在我們使用 Allow 的時候還可能會遇到需要呼叫多次、搭配 Block 使用的情況,在這樣的狀況下該如何處理呢?
在 RSpec 的測試中,我們最常會使用到的是 Allow 來改變一個物件的回傳,基本上在需要使用測試替身(Test Double)的地方,就會使用用到。
在測試中,我們經常會看到 Mock 和 Stub 這兩個詞,很多時候也不容易區分清楚。在 RSpec 中我們基本上不會看到 Mock 或者 Stub 這兩個詞,取而代之的是 Double 和 Allow。