J'essaie de tester une action de contrôleur sur Rails 2.3.10 qui se connectent à Google pour récupérer des contacts. J'utilise Rspec et Mocha pour tester. Je veux remplacer l'appel réel à Google puisqu'il s'agit d'un test unitaire. Je veux vérifier que la méthode authsub_url est appelée avec les paramètres corrects. Cesser la méthode provoque l'échec de l'attente.RSpec Google Contacts Connexion
Tout conseil serait apprécié.
Merci!
Ma méthode qui met en place le client Google est ci-dessous:
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
Voici mon test:
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