¿Cuáles son algunas estrategias de OOP para trabajar con una base de datos pero hacer que la unidad sea comprobable? Digamos que tengo una clase de usuario y mi entorno de producción funciona contra MySQL. Veo un par de enfoques posibles, que se muestran aquí usando PHP:
Pase un $ data_source con interfaces para
load()ysave(), para abstraer el origen de datos del backend. Al realizar la prueba, pase un almacén de datos diferente.$ usuario = nuevo usuario ($ mysql_data_source); $ usuario-> carga ('bob'); $ usuario-> setNickname ('Robby'); $ usuario-> guardar ();Use una fábrica que acceda a la base de datos y pase la fila de resultados al constructor del Usuario. Al realizar la prueba, genere manualmente el parámetro $ row o simule el objeto en UserFactory :: $ data_source. (¿Cómo puedo guardar los cambios en el registro?)
class UserFactory { static $data_source; public static function fetch( $username ) { $row = self::$data_source->get( [params] ); $user = new User( $row ); return $user; } }
Tengo patrones de diseño y código limpio aquí a mi lado, pero estoy luchando por encontrar conceptos aplicables.