gpt4 book ai didi

android - PowerMock - 从延迟的 RxJava 流调用的静态方法

转载 作者:行者123 更新时间:2023-11-29 22:46:48 25 4
gpt4 key购买 nike

我正在尝试模拟 BluetoothAdapter.getDefaultInstance(),这在通常的实现中运行良好,但当通过延时 RxJava 流访问模拟时失败。

就好像我调用...

当(BluetoothAdapter.getDefaultAdapter()).thenReturn(null)

...永远不会发生,我们会收到一个典型的异常:

java.lang.RuntimeException:未模拟 android.bluetooth.BluetoothAdapter 中的方法 getDefaultAdapter

上下文在类似于以下的流中:

Observable
.delay(1000, TimeUnit.MILLISECONDS)
.doFinally(() -> BluetoothAdapter.getDefaultInstance().getBluetoothLeScanner().stopScan())
.subscribe();

最佳答案

如果在 RxJava 流上延迟后调用模拟静态方法,则必须通过 RxJavaPlugins 设置 TestScheduler 处理程序以使静态模拟生效:

private final TestScheduler testScheduler = new TestScheduler();

...

RxJavaPlugins.setComputationSchedulerHandler(schedulerCallable -> testScheduler);

关于android - PowerMock - 从延迟的 RxJava 流调用的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58275634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com