我試圖測試一下控制器在Rails 2.3.10上的操作,它連接到Google以檢索聯繫人。我正在使用Rspec和Mocha進行測試。由於這是一次單元測試,因此我想將實際的電話撥到Google上。我想驗證用正確的參數調用authsub_url方法。對方法進行保留會導致期望失敗。RSpec谷歌聯繫人連接
任何意見,將不勝感激。
謝謝!
我的方法,設置了客戶端谷歌低於:
def setup_client
@client = GData::Client::DocList.new(:authsub_scope => CONTACTS_SCOPE, :source => 'google-DocListManager-v1.1', :version => '3.0')
if params[:token].nil? && session[:google_token].nil?
@authsub_link = @client.authsub_url(import_method_gmail_url, false, true)
render :action => :index, :layout => "empty"
elsif params[:token] && session[:google_token].nil?
@client.authsub_token = params[:token]
session[:google_token] = @client.auth_handler.upgrade
end
@client.authsub_token = session[:google_token] if session[:google_token]
end
這裏是我的測試:
describe "setup_client" do
it "has a authsub_link if there is no token parameter and the google token is not present in the session" do
GData::Client::DocList.any_instance.stubs(:authsub_url).returns("http://test.google.com/contacts")
user = Factory(:subscriber_user)
profile = Factory(:profile, :user => user)
login_as user
controller.instance_variable_get(:@client).expects(:authsub_url).with(import_method_gmail_url, false, true).once
get :index
assigns(:authsub_link).should == "http://test.google.com/contacts"
end
end