Как превратить приватную функцию во вспомогательную функцию?

Я писал тесты для своего приложения. Однако при выполнении моих тестов я получаю ошибку Stall on main thread на моей функции

private func waitForElementToAppear(testCase: XCTestCase,
                                    element: XCUIElement,
                                    file: String = #file,
                                    line: UInt = #line) {

    let existsPredicate = NSPredicate(format: "exists == true")
    testCase.expectationForPredicate(existsPredicate,
                                     evaluatedWithObject: element, handler: nil)

    testCase.waitForExpectationsWithTimeout(5) { (error) -> Void in
        if (error != nil) {
            let message = "Failed to find \(element) after 5 seconds."
            testCase.recordFailureWithDescription(message,
                                                  inFile: file, atLine: line, expected: true)
        }
    }
}

Я использую эту функцию несколько раз в моих тестах / коде. Как я могу преобразовать это в вспомогательную функцию, поэтому мне нужно написать эту функцию только один раз. Спасибо за помощь заранее:)

2 ответа

Решение

Проще использовать расширение:

extension XCTestCase {

    // your function here
}

Таким образом, вы можете использовать его во всех ваших тестовых классах без дополнительного класса

Вы можете создать вспомогательный класс и сделать функцию статической

class Helper {
    static func waitForElementToAppear(testCase: XCTestCase,
                                element: XCUIElement,
                                file: String = #file,
                                line: UInt = #line) {
        // do stuff
    }
}

Таким образом, где бы вам ни понадобилось использовать функцию, вы можете вызывать эту функцию в помощнике.

Другие вопросы по тегам