使用分派对iOS功能进行单元测试

时间:2020-06-17 13:24:36

标签: ios unit-testing dispatch-async expectations

我是第一次进行单元测试,但是我迷失了一些具体案例。

尽管读了很多书,但我对如何在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(),但我不知道在哪里。

1 个答案:

答案 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进行期望。