我是第一次进行单元测试,但是我迷失了一些具体案例。
尽管读了很多书,但我对如何在iOS中测试像这样的功能感到困惑:
func myFunction() {
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
// Tasks to do in background
dispatch_async(dispatch_get_main_queue(), ^(void){
// Get the results
// Update UI
});
});
}
我已经读过“期望”(https://developer.apple.com/documentation/xctest/asynchronous_tests_and_expectations/testing_asynchronous_operations_with_expectations?language=objc),但是我不知道如何使用它们。我想我应该打电话 Expectation.fulfill(),但我不知道在哪里。
答案 0 :(得分:0)
由于Timer.periodic(Duration(minutes: 30), () {
// Make a local notification
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'your channel id', 'your channel name', 'your channel description',
importance: Importance.Max, priority: Priority.High, ticker: 'ticker');
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0, 'plain title', 'plain body', platformChannelSpecifics,
payload: 'item x');
});
不接受可以在其中调用myFunction
的完成处理程序,因此无法测试。
您需要重构函数以接受可选的完成处理程序闭包,并在工作完成后调用它。然后,当您从测试中调用函数时可以传递闭包,您可以在其中fulfill
进行期望。