over 8 years ago
以這個程式來說,我們要把「課程上架」,課程上架以後,系統會送一封 onboarding 信給開課教師。
但是下面這個測試,我們在這裡測試的狀況,我們根本不在乎「信是否有沒有被送給開課教師」,我們在乎的是:呼叫 publish!
後,是否課程真的已經會被上架。
所以我們就會用 allow(course.user).to receive(:send_welcome_email!)
把 send_welcome_email!
這件事 stub 掉,讓它 return nil,這樣就不會呼叫 UserMailer 了。
何況,我們可能也還沒時間開發 UserMailer 內的東西。
- 備註: 在 RSpec 2.x 版,你可以直接這樣寫
course.stub(:send_welcome_email!)
,但這寫法造成一些敘述語法問題,所以 RSpec 3 改成 allow + receive - 備註: 在 RSpec 2.x 的
stub
與mock
語法造成一些很大的語法與觀念問題。RSpec 3 改的清楚不少...