测试 Play Age Signals API(Beta 版)集成

如需测试 Play Age Signals API(Beta 版)与应用的集成情况,请使用年龄信号制品中提供的 FakeAgeSignalsManager 实现。借助 FakeAgeSignalsManager 实现,您可以模拟 API 的行为。

FakeAgeSignalsManager 仅用于单元测试或集成测试,以确认应用行为。如需测试集成,请将 AgeSignalsManager 实例替换为 FakeAgeSignalsManager 实例。

以下示例模拟了已验证的成人用户的回答:

Kotlin

val fakeVerifiedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.VERIFIED)
        .build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeVerifiedUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { /* handle success case */ }
    .addOnFailureListener { /* handle failure case */ }

Java

AgeSignalsResult fakeVerifiedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.VERIFIED)
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeVerifiedUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(/* handle success case */)
    .addOnFailureListener(/* handle failure case */);

以下示例模拟了 13 至 17 岁受监督用户的回答:

Kotlin

val fakeSupervisedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setInstallId("fake_install_id")
        .build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeSupervisedUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { /* handle success case */ }
    .addOnFailureListener { /* handle failure case */ }

Java

AgeSignalsResult fakeSupervisedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setInstallId("fake_install_id")
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(/* handle success case */)
    .addOnFailureListener(/* handle failure case */);

以下示例模拟了针对受监督的 13 至 17 岁用户待批准的重大变更的响应,该用户之前未批准过任何重大变更:

Kotlin

val fakeSupervisedApprovalPendingUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setInstallId("fake_install_id")
        .build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeSupervisedApprovalPendingUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { /* handle success case */ }
    .addOnFailureListener { /* handle failure case */ }

Java

AgeSignalsResult fakeSupervisedApprovalPendingUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setInstallId("fake_install_id")
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedApprovalPendingUser);
manager
    .checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(/* handle success case */)
    .addOnFailureListener(/* handle failure case */)

以下示例模拟了对 13 至 17 岁受监督用户的待批重大变更的响应,该用户已批准所有重大变更,包括自 2025-02-01 起生效的重大变更:

Kotlin

val fakeSupervisedApprovalPendingUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setMostRecentApprovalDate(
          Date.from(LocalDate.of(2025, 2, 1).atStartOfDay(ZoneOffset.UTC).toInstant())
        )
        .setInstallId("fake_install_id")
        .build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeSupervisedApprovalPendingUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { /* handle success case */ }
    .addOnFailureListener { /* handle failure case */ }

Java

AgeSignalsResult fakeSupervisedApprovalPendingUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_PENDING)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setMostRecentApprovalDate(
          Date.from(LocalDate.of(2025, 2, 1).atStartOfDay(ZoneOffset.UTC).toInstant()))
        .setInstallId("fake_install_id")
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedApprovalPendingUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(/* handle success case */)
    .addOnFailureListener(/* handle failure case */);

以下示例模拟了以下情况:对于一名 13 至 17 周岁的受监督用户,系统拒绝了其重大变更审批请求,但截至 2025 年 2 月 1 日生效的重大变更(含该变更)之前的所有重大变更均已获批:

Kotlin

val fakeSupervisedApprovalDeniedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setMostRecentApprovalDate(
          Date.from(LocalDate.of(2025, 2, 1).atStartOfDay(ZoneOffset.UTC).toInstant())
        )
        .setInstallId("fake_install_id")
        .build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeSupervisedApprovalDeniedUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { /* handle success case */ }
    .addOnFailureListener { /* handle failure case */ }

Java

AgeSignalsResult fakeSupervisedApprovalDeniedUser =
    AgeSignalsResult.builder()
        .setUserStatus(AgeSignalsVerificationStatus.SUPERVISED_APPROVAL_DENIED)
        .setAgeLower(13)
        .setAgeUpper(17)
        .setMostRecentApprovalDate(
          Date.from(LocalDate.of(2025, 2, 1).atStartOfDay(ZoneOffset.UTC).toInstant()))
        .setInstallId("fake_install_id")
        .build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeSupervisedApprovalDeniedUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(/* handle success case */)
    .addOnFailureListener(/* handle failure case */);

以下示例模拟了未知用户状态的响应:

Kotlin

val fakeUnknownUser =
    AgeSignalsResult.builder().setUserStatus(AgeSignalsVerificationStatus.UNKNOWN).build()
val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsResult(fakeUnknownUser)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { /* handle success case */ }
    .addOnFailureListener { /* handle failure case */ }

Java

AgeSignalsResult fakeUnknownUser =
    AgeSignalsResult.builder().setUserStatus(AgeSignalsVerificationStatus.UNKNOWN).build();
FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsResult(fakeUnknownUser);
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(/* handle success case */)
    .addOnFailureListener(/* handle failure case */);

以下示例模拟了具有网络错误代码的响应:

Kotlin

val manager = FakeAgeSignalsManager()
manager.setNextAgeSignalsException(
  AgeSignalsException(AgeSignalsErrorCode.NETWORK_ERROR)
)
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener { /* handle success case */ }
    .addOnFailureListener { /* handle failure case */ }

Java

FakeAgeSignalsManager manager = new FakeAgeSignalsManager();
manager.setNextAgeSignalsException(
    new AgeSignalsException(AgeSignalsErrorCode.NETWORK_ERROR));
manager.checkAgeSignals(AgeSignalsRequest.builder().build())
    .addOnSuccessListener(/* handle success case */)
    .addOnFailureListener(/* handle failure case */);