你如何调用 Robolectric 的 ShadowWifiManager.setScanResults()?

How do you call Robolectric's ShadowWifiManager.setScanResults()?

在测试期间,我需要将 WifiManager.getScanResults() 方法 return 设为非空列表。我正在使用 Robolectric。我发现 ShadowWifiManager 有一个 setScanResults() 方法,它接受一个 ScanResult 对象的列表——但它们没有 public 构造函数。

我发现Robolectric有一个ScanResult的影子,还有一个newInstance的方法。可以这样使用:

shadowOf(((WifiManager)controller.get().getSystemService(Context.WIFI_SERVICE))).setScanResults(Collections.singletonList(ShadowScanResult.newInstance("Foo", "Bar", "", 1, 2)));

或者,更详细地说: final int level = 5; final int frequency = 100; final ScanResult scanResult = ShadowScanResult.newInstance( "A fake SSID", "A fake BSSID", "Some capabilities", level, frequency); final Context context = controller.get(); final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); shadowOf(wifiManager).setScanResults(Collections.singletonList(scanResult));