Cum să stub în mediul de dezvoltare Rails?

Caut un mod sigur de a stuba dinamic anumite metode în mediul meu de dezvoltare. Un exemplu de utilizare a cazului este când trebuie să fac o dezvoltare care în mod normal necesită acces la API-urile Facebook Graph, dar nu am acces la Internet. Aș dori să fiu capabil să blochez apelurile la metode fb_graph astfel încât să pară că sunt autentificat și că am date de profil. În mod ideal, aș putea să acționez sau să dezactivez cu o mică schimbare config.

Vreo idee? Presupun că ceva ca mocha se poate ocupa de asta?

1

2 răspunsuri

Puteți utiliza bijuteria VCR care va înregistra rezultatele unei cereri inițiale HTTP într-un fișier yml și apoi va folosi conținutul acelui fișier yml în solicitările de http următoare. Acesta poate fi apoi configurat să ignore logica VCR și să facă mereu cereri HTTP, dacă se dorește:

https://www.relishapp.com/myronmarston/vcr

1
adăugat

Mocha o poate face cu siguranță. Dar se simte cam ciudat.

De asemenea, ați putea face ceva de genul injectării de dependență.

De exemplu:

class User < AR::Base

  def find_friends
    Facebook.find_friends(facebook_id)
  end

end

class Facebook

  def self.find_friends(id)
    # connect to Facebook here
  end

end

class FakeFacebook

  def self.find_friends(id)
    # a fake implementation here
  end

end

Și în interiorul unui inițializator:

if Rails.env.development?
  User::Facebook = FakeFacebook
end
1
adăugat