最新の 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 の適切な使用例はありますか? 続行する方法についての手がかりはありますか?
ありがとう、オリヴィエ