Тестовый пример URLSession - PullRequest
       16

Тестовый пример URLSession

0 голосов
/ 04 марта 2020

У меня есть тестовый случай аутентификации пользователя, который регистрирует пользователя, и пользователь сохраняется в файле json. Весь проект посвящен тестированию, и я не могу понять, как это сделать go.

Существует файл NetworkService.swift, который обрабатывает все функции тестирования, но в регистр вызовов не был передан URL-адрес.

NetworkService.swift

class NetworkService: NSObject {

    private let session: URLSession

    init(session: URLSession) {
        self.session = session
    }

    //token for requests
    var authToken: String?


    //MARK: Singleton

    static var sharedService: NetworkService = NetworkService(session: URLSessionMock())


    //MARK: Requests

    func registerUserWith(login: String?, password: String?, success: @escaping (Data)->(), failure: @escaping (Error?) -> ()) {

        //register user method, use self.session
    }

    func getAllEvents(success: @escaping (Data)->(), failure: @escaping (Error?) -> ()) {

        //get all events method, use self.session
    }

    func subscribeOnEvent(eventUUID: Int, success: @escaping (Data)->(), failure: @escaping (Error?) -> ()) {

        //subscribe method, use self.session
    }

    func unsubscribeFromEvent(eventUUID: Int, success: @escaping (Data)->(), failure: @escaping (Error?) -> ()) {

        //unsubscribe method, use self.session
    }
}

Это тестовый пример

func testUserRegistrationMethod() {
        let expectation: XCTestExpectation = self.expectation(description: "user registration")

        let login: String = "testUser"
        let password: String = "pass"

        NetworkService.sharedService.registerUserWith(login: login, password: password, success: { (responseData) in
            expectation.fulfill()
            XCTAssertNotNil(responseData, "Data is nil")

            do {
                let json = try JSONSerialization.jsonObject(with: responseData, options:[]) as! [String : Any?]
                let authToken: String = json["authToken"] as! String

                XCTAssertNotNil(authToken, "AuthToken is nil")

            } catch let error {
                print(error)
            }
        }) { (error) in
            expectation.fulfill()
            XCTFail((error?.localizedDescription)!)
        }

        waitForExpectations(timeout: 4) { (error) in
            if error != nil {
                print(error!)
            }
        }
    }

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

Реализация сетевой службы, которая используется для взаимодействия с сервер.

Постановка проблемы

Необходимо реализовать следующие методы:

  • Функция регистрирует пользователей с помощью логина и пароля. , В случае успешной регистрации, он возвращает токен в блоке успеха. В случае ошибки вызывается блок сбоя. func registerUserWith(login: String?, password: String?, success: @escaping (Data)->(), failure: @escaping (Error?) -> ())

У меня нет URL-адреса и я не знаю, является ли это полным вопросом

...