Hola a todos!
Otra novedad en la lista de nuestros cursos:
"iOS Developer" , lo que significa que ha llegado el momento de las piezas interesantes que encontramos durante la preparación del curso. En este artículo, el autor analiza cómo grabar y reproducir solicitudes de API para pruebas de IU.

Vamos
Recientemente integré
Embassy y
Succulent en mis pruebas de IU. Si necesita ejecutar pruebas de IU para una aplicación que utiliza estas API, esta guía puede ofrecer una alternativa a simulacro / código auxiliar.
Los problemas:
- La aplicación utiliza los datos de la API para completar la interfaz de usuario;
- El uso de talones puede requerir escribir y mantener una gran cantidad de archivos;
- Cuando se utilizan simulacros, la lógica de la aplicación puede diferir de la llamada de red real;
- Uso de esta API de conexión: EXACTAMENTE EXCLUIDA, demasiadas variables y bloqueos
Embajada + solución suculentaLa solución es crear un servidor local al que se dirija su aplicación (usando Embassy), y grabar / responder llamadas de red (usando Succulent).
La primera vez que ejecute la prueba, se realizarán llamadas de red estándar y se escribirán en el archivo de rastreo.
La próxima vez, estas mismas llamadas de red serán respondidas automáticamente. Genial, ¿no es así? No es necesario escribir simulacros, puede simular retrasos y errores, ¡y todo esto se ejecuta dentro de la máquina de compilación, dentro de XCtest!
¿Cómo usarlo?1. Descargue e instale bajo Succulent. En el momento de escribir esto, no había un pod en cocoapods.com, por lo que debe descargar la fuente y agregarla a su subarchivo de la siguiente manera:
target “UI Tests” do inherit! :search_paths pod 'Succulent', :path => 'Succulent/' end
La embajada requiere suculento y se instalará automáticamente.
2. Cree un nuevo archivo de interfaz de usuario de prueba y copie las instrucciones de
Succulent GitHub . Como resultado, debería obtener este archivo:
import Succulent @testable import TestAppUITests class SucculentTestUITest: XCTestCase { private var succulent: Succulent! var session: URLSession! var baseURL: URL! /// The name of the trace file for the current test private var traceName: String { return self.description.trimmingCharacters(in: CharacterSet(charactersIn: "-[] ")).replacingOccurrences(of: " ", with: "_") } /// The URL to the trace file for the current test when running tests private var traceUrl: URL? { let bundle = Bundle(for: type(of: self)) return bundle.url(forResource: self.traceName, withExtension: "trace", subdirectory: "Traces") } /// The URL to the trace file for the current test when recording private var recordUrl: URL { let bundle = Bundle(for: type(of: self)) let recordPath = bundle.infoDictionary!["TraceRecordPath"] as! String return URL(fileURLWithPath: "\(recordPath)/\(self.traceName).trace") } override func setUp() { super.setUp() continueAfterFailure = false if let traceUrl = self.traceUrl { // Replay using an existing trace file succulent = Succulent(traceUrl: traceUrl) } else { // Record to a new trace file succulent = Succulent(recordUrl: self.recordUrl, baseUrl: URL(string: "https//base-url-to-record.com/")!) } succulent.start() let app = XCUIApplication() app.launchEnvironment["succulentBaseURL"] = "http://localhost:\(succulent.actualPort)/" app.launch() } override func tearDown() { super.tearDown() } }
Cuando inicie Succulent, puede especificar la URL base, gracias a la cual se registrarán todas las solicitudes, incluida la URL base, y se ignorarán todas las demás.
3. Agregue la siguiente línea al objetivo Info.plist de su IU de prueba:
<key>TraceRecordPath</key> <string>$(PROJECT_DIR)/Succulent/Traces</string>
4. Dirija la aplicación al servidor local.
Para hacer esto dentro de su aplicación principal, debe verificar si la variable de entorno "succulentBaseURL" existe y si está configurada.
Muestra la url de su servidor web local y está configurada en la función de configuración, que se copió anteriormente en el paso 2.
¡Eso es todo, tal vez!
Ahora, cuando realice una prueba simple y la ejecute, Succulent escribirá una solicitud de API y creará un archivo .trace en la carpeta Traces del directorio de destino de su prueba de IU. La próxima vez que ejecute la misma prueba, verificará si el archivo existe y lo ejecutará.
Puede abrir archivos .trace directamente desde Xcode, ver todas las solicitudes de red y modificarlas según sea necesario.
Espero que el artículo haya resultado útil, aquí está la pizza:

El fin
Como de costumbre, estamos esperando comentarios, preguntas, etc. aquí o puede ver el
Día de puertas abiertas y hacer una pregunta al
maestro allí.