Cómo escribir pruebas unitarias en ReactiveCocoa
Cómo escribir pruebas unitarias en ReactiveCocoa
Muchas personas ahora usan ReactiveCocoa cuando desarrollan iOS. Es un marco de programación funcional y reactivo que usa Signal para reemplazar KVO, Notification, Delegate, Target. -Acción, etc. entrega mensajes y resuelve el problema de dependencias excesivas entre estados y estados entre objetos. Pero muchas veces después de usarlo, ¿cómo escribir pruebas unitarias para verificar si el programa es correcto? Primero comprendamos la arquitectura MVVM y luego usemos un ejemplo para contar cómo uso Kiwi para escribir pruebas unitarias en RAC (reactiveCocoa para abreviar).
En la arquitectura MVVM, la vista y el controlador de vista generalmente se consideran como un todo. En comparación con la arquitectura MVC anterior, donde el controlador de vista realizaba una gran cantidad de trabajo de interacción y mapeo de datos entre la vista y el modelo, ahora le corresponde al modelo de vista hacerlo.
No hay obligación de elegir qué mecanismo actualizar el modelo de vista o la vista, pero normalmente elegimos ReactiveCocoa. ReactiveCocoa escuchará los cambios del modelo y asignará estos cambios a las propiedades del modelo de vista y podrá realizar cierta lógica empresarial.
Por ejemplo, hay un modelo que contiene un atributo dateAdded. Quiero escuchar sus cambios y luego actualizar el atributo dateAdded del modelo de vista. Sin embargo, el tipo de datos del atributo dateAdded del modelo es NSDate, mientras que el tipo de datos del modelo de vista es NSString, por lo que el enlace de datos se realiza en el método init del modelo de vista, pero se requiere la conversión del tipo de datos. El código de muestra es el siguiente:
RAC (self, dateAdded) = [RACObserve (self.model, dateAdded) map: ^ (NSDate*date) { return [ [ ViewModel dateFormatter ] stringFromDate: date ]; } ] ;
ViewModel llama a dateFormatter para la conversión de datos y el método dateFormatter se puede reutilizar en otros lugares. Luego, el controlador de vista escucha la propiedad dateAdded del modelo de vista y se vincula a la propiedad de texto de la etiqueta.
RAC (self.label, text) = RACObserve (self.viewModel, dateAdded);
Ahora abstraemos la lógica de convertir fecha en cadena en el modelo de vista, de modo que el El código se puede probar y reutilizar, y ayudar a reducir el peso de los controladores de visualización.