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 包装器的自动化测试的主要内容,如果未能解决你的问题,请参考以下文章

当包装器的溢出-x为自动时,FF左表边框消失

无法识别的选择器在 iOS9 上的 facebook sdk 4.6 中发送到 facebook 登录管理器的实例

为啥 facebook sdk 会自动让我登录 iPhone 上安装的 facebook 应用程序?

发布前xcode自动登录中的Facebook SDK Singleton?

facebook iOS SDK 授权,无需重定向到 safari

对象包装器与自动装箱