Как получить EnvironmentObject / Publishers при тестировании пользовательского интерфейса в SwiftUI - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь написать UI-тест для страницы подписи SwiftUI, пытаясь проверить издателя из класса, если переменная переключается с false на true. Я импортировал приложение как модуль @testable import MyApp, а затем написал этот код следующим образом:

func testLogInOfAUser() throws {
    let email = app.textFields["email"]
    email.tap()
    email.typeText("email@mail.com \n")
    let password = app.secureTextFields["password"]
    password.tap()
    password.typeText("password \n")
    let loginBtn = app.buttons["Login"]
    loginBtn.tap()
    
    let sut = UserAuth()
    sut.login()

    XCTAssert(sut.isLoggedin == true)
    
}

Класс для UserAuth

class UserAuth: ObservableObject {
    @Published var isLoggedin:Bool = false
    
    func login() {
        self.isLoggedin.toggle()
    }
}

Когда я запускаю тест, я столкнуться с этой ошибкой;

Undefined symbols for architecture arm64:
  "type metadata accessor for MyApp.UserAuth", referenced from:
      MyAppUITests.MyAppUITests.testLogInOfAUser() throws -> () in MyAppUITests.o
  "MyApp.UserAuth.__allocating_init() -> MyApp.UserAuth", referenced from:
      MyAppUITests.MyAppUITests.testLogInOfAUser() throws -> () in MyAppUITests.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

1 Ответ

0 голосов
/ 10 июля 2020

XCTest - это среда тестирования черного ящика. Таким образом, вы можете взаимодействовать с приложением только так, как взаимодействуют с ним ваши пользователи.

В вашем случае вы должны проверить изменения пользовательского интерфейса, например, если новый экран появился после входа в систему и т. Д.

Если вам все еще нужно покопаться в своем приложении, вы должны использовать фреймворки для тестирования белого ящика. Я рекомендую вам использовать EarlGrey 2.0, потому что он полностью совместим с XCTest, и вы можете сохранить весь существующий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...