2010-05-30 3 views
3

Dans mon application Facebook, j'ai une classe wrapper Facebook pour encapsuler un appel à Facebook API. Je veux écrire un test unitaire pour cette classe wrapper, mais comme cela dépend d'un soi-disant "token d'accès", que nous devrions obtenir dynamiquement de Facebook, je ne suis pas sûr qu'il soit possible d'en écrire un.Tests automatisés pour le wrapper Facebook SDK

Mais apparemment le SDK Facebook lui-même a une classe de test PHPUnit. Après avoir étudié le code de test pendant un certain temps, je sais que cela implique une création de clé de session basée sur des cookies factices.

private static $VALID_EXPIRED_SESSION = array(
    'access_token' => '254752073152|2.I_eTFkcTKSzX5no3jI4r1Q__.3600.1273359600-1677846385|uI7GwrmBUed8seZZ05JbdzGFUpk.', 
    'expires' => '1273359600', 
    'secret' => '0d9F7pxWjM_QakY_51VZqw__', 
    'session_key' => '2.I_eTFkcTKSzX5no3jI4r1Q__.3600.1273359600-1677846385', 
    'sig' => '9f6ae89510b30dddb3f864f3caf32fb3', 
    'uid' => '1677846385' 
); 

. 
. 
. 

$cookieName = 'fbs_' . self::APP_ID; 
$session = self::$VALID_EXPIRED_SESSION; 
$_COOKIE[$cookieName] = '"' . http_build_query($session) . '"'; 

Ce que je ne comprends pas, comment puis-je obtenir le "access_token", "sig", "session_key" etc? En ce qui me concerne, il devrait être échangé dynamiquement de Facebook et implique l'action de l'utilisateur (se connecter).

Répondre

1

Je ne connais pas du tout le développement de Facebook. Cependant, il existe un modèle général appelé "injection de dépendance" que vous pourriez vouloir regarder.

Si vous avez un objet dans la classe que vous testez qui doit être truqué, vous écrivez votre code afin que vous puissiez transmettre l'objet qui doit être falsifié. http://en.wikipedia.org/wiki/Dependency_injection

Est-ce que cela aide du tout?

+0

J'ai entendu parler de quelque chose de similaire auparavant, appelé "objets simulés". Donc, dans mon cas, j'ai besoin de créer un faux SDK Facebook, qui au lieu d'interroger le serveur Facebook, il lit à partir de données locales? – Andree

+0

Les objets fantaisie peuvent être très utiles. Il y a quelques bonnes bibliothèques pour les générer facilement. Je connais plusieurs bibliothèques pour créer des objets fantaisie dans .net. Je vous suggère de faire une recherche Google pour les objets simulés et l'injection de dépendance; voyez si vous pouvez trouver des exemples similaires à ce que vous faites. –

Questions connexes