我正在尝试设置我的单元测试以使用最新的 facebook SDK 并遇到问题......
这是我的代码:
[FBSession setDefaultAppID: @"323351877676429"];
FBTestSession *session = [FBTestSession sessionWithSharedUserWithPermissions: [NSArray array]];
STAssertNotNil(session, @"could not create test session");
[FBTestSession openActiveSessionWithReadPermissions:@[]
allowLoginUI:NO
completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
NSLog(@"completed");
[FBSession setActiveSession: session];
STAssertNil(error, error.description);
STAssertNotNil(FBSession.activeSession, @"FBSession missing");
STAssertNotNil(FBSession.activeSession.accessTokenData, @"FBSession missing");
STAssertNotNil(FBSession.activeSession.accessTokenData.accessToken, @"facebook token is nil");
STAssertNotNil(session, @"FBSession missing");
STAssertNotNil(session.accessTokenData, @"FBSession missing");
STAssertNotNil(session.accessTokenData.accessToken, @"facebook token is nil");
userModel *userM = [[userModel alloc] init];
[userM awakeFromNib];
} ];
这很好用,除了它是异步运行的,当我的测试运行时,会话还没有准备好,因此我有 session.accessTokenData == nil.,这使我的其他测试失败。
如果我在 openSession 调用之后将以下代码添加到我的设置方法中,那么设置方法将永远不会返回。
while (!FBSession.activeSession.accessTokenData)
[NSThread sleepForTimeInterval:.2];
在某处是否有正确使用 FBTestSession 的示例?关于如何进行的任何线索?
谢谢,奥利维尔