Facebook SDK 包装器的自动化测试
Posted
技术标签:
【中文标题】Facebook SDK 包装器的自动化测试【英文标题】:Automated testing for Facebook SDK wrapper 【发布时间】:2010-05-30 19:32:16 【问题描述】:在我的 Facebook 应用程序中,我有一个 Facebook 包装类来封装对 Facebook API 的一些调用。我想为这个包装类编写一个单元测试,但由于它依赖于所谓的“访问令牌”,我们应该从 Facebook 动态获取它,我不确定是否可以编写一个。
但显然 Facebook SDK 本身有一个 phpUnit 测试类。在研究了一段时间的测试代码后,我知道这涉及到创建基于 cookie 的虚拟会话密钥。
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) . '"';
我不明白的是,我如何获得“access_token”、“sig”、“session_key”等?就我而言,它应该是从 Facebook 动态交换并涉及用户操作(登录)。
【问题讨论】:
【参考方案1】:我根本不熟悉 facebook 开发。但是,您可能需要研究一种称为“依赖注入”的通用模式。
如果您正在测试的类中有一些需要伪造的对象,您可以编写代码,以便可以传入需要伪造的对象。 http://en.wikipedia.org/wiki/Dependency_injection
这有帮助吗?
【讨论】:
我以前听说过类似的东西,称为“模拟对象”。所以在我的情况下,我需要创建一个假的 Facebook SDK,而不是查询 Facebook 服务器,而是从本地数据中读取? 模拟对象非常有用。有一些很好的库可以轻松生成它们。我熟悉几个用于在 .net 中创建模拟对象的库。我建议您在 Google 上搜索模拟对象和依赖注入;看看你是否能找到一些与你正在做的事情相似的例子。以上是关于Facebook SDK 包装器的自动化测试的主要内容,如果未能解决你的问题,请参考以下文章
无法识别的选择器在 iOS9 上的 facebook sdk 4.6 中发送到 facebook 登录管理器的实例
为啥 facebook sdk 会自动让我登录 iPhone 上安装的 facebook 应用程序?
发布前xcode自动登录中的Facebook SDK Singleton?