你如何调用 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));
在测试期间,我需要将 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));