2014-02-17 92 views
2

讓我先說一下,我是一個新手,在這裏寫測試,只用幾個星期就可以使用rails。 爲我的手機驗證書寫rspec測試。下面是一些代碼第一:測試twilio api

User.stub(:create).and_return(@user) 
@user.stub(:send_sms).with('foo').and_return('bar') 

sign_in @user 
visit home_path 

click_link 'Telephone verification' 

現在,這是我想存根和沒有實際進入真正的方法返回任意值,在我的用戶的方法:

def send_sms 
    TWILIO_CLIENT.account.sms.messages.create(
     :from => TWILIO_SMS_NUMBER, 
     :to => phone, 
     :body => "Verification code is: #{sms_code}" 
    ) 
    end 

我做甚至做這裏正確的事情?我甚至不確定,我在這個主題上閱讀了很多東西,仍然感到困惑。

因爲我沒有TWILIO_CLIENT初始化測試環境中我得到這個錯誤,當我save_and_open_page:

uninitialized constant User::TWILIO_CLIENT 

所以我想存根send_sms方法,是正確的事是什麼?

回答

2

我沒有TWILIO_CLIENT測試環境

你需要的地方定義這些常數初始化。它應該如此簡單:

TWILIO_CLIENT = double('twilio_client') 
TWILIO_SMS_NUMBER = double('twilio_sms_number') 

現在,您可以在測試雙打上存根方法。

存根調用本身,你可以使用stub_chain

TWILIO_CLIENT.stub_chain(:account, :sms, :messages, :create) 

雖然這應該工作,只要看到stub_chain這會暗示你可能要重構。在這種情況下,你可能不應該進入TWILIO_CLIENT並且搞亂它的內部。