Проведите пальцем влево в модульном тесте вручную, чтобы вызвать обработчик для тестирования в Swift - PullRequest
1 голос
/ 12 марта 2019

Я занимаюсь модульным тестированием таблицы, и мне нужно провести логически? строка в UITableView. Можно ли выполнить смахивание в модульном тесте для вызова обработчика? Я посмотрел на UITableViewDelegate, но нет действия смахивания (didSelectRowAt есть и тестируется в модульном тесте).

func createDeleteHandler(tableView : UITableView, indexPath : IndexPath) -> UIContextualAction.Handler {
        let deleteHandler =  { (ac:UIContextualAction, view:UIView, success:(Bool) -> Void) in
            let noteToBeDeleted = self.notes[indexPath.row]
            NoteManager.shared.deleteNote(note: noteToBeDeleted)
            self.notes.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
            success(true)
        }

        return deleteHandler
    }

1 Ответ

1 голос
/ 13 марта 2019

Вы можете использовать тесты XCUITest следующим образом:

import XCTest

class MoreUITests: XCTestCase {

    override func setUp() {
        continueAfterFailure = false
        XCUIApplication().launch()
    }

    func testUI() {

        let app = XCUIApplication()
        let tablesQuery = app.tables
        let addButton = app.navigationBars["Master"].buttons["Add"]
        let masterButton = app.navigationBars["Detail"].buttons["Master"]
        addButton.tap()  // adds Item-0
        addButton.tap()  // adds Item-1
        addButton.tap()  // adds Item-2
        addButton.tap()  // adds Item-3

        tablesQuery.staticTexts["Item-1"].tap()

        // Go back
        masterButton.tap()

        // Swipe Left on item-2
        tablesQuery.staticTexts["Item-2"].swipeLeft()

    }
}

Самое простое, что можно сделать - это записать их с помощью Xcode UI Recorder. Более подробно:

https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html

Вот пример, который я записал с помощью прикосновения:

https://youtu.be/lHafMlIcoCY

...