El término «Object Mother» (Madre de Objetos) es un patrón de diseño utilizado en el desarrollo de software. Este patrón se engloba dentro de la categoría de patrones de diseño creacionales y se utiliza para crear objetos de prueba o datos de prueba de manera eficiente y reutilizable.
El objetivo principal del patrón Object Mother es encapsular la creación de objetos complejos o configuraciones específicas para las pruebas. En lugar de crear manualmente cada objeto de prueba en diferentes pruebas, se define una clase o método específico que se encarga de crear y configurar los objetos necesarios.
El patrón Object Mother sigue el principio de «Fábrica de Objetos» (Factory Method), donde se delega la creación de objetos a un componente dedicado en lugar de hacerlo directamente en el código de la prueba.
Ejemplo en TypeScript:
class User {
public name: string;
public email: string;
public role: string;
constructor(name: string, email: string, role: string) {
this.name = name;
this.email = email;
this.role = role;
}
}
class ObjectMother {
public static createDefaultUser(): User {
return new User("John Doe", "john@example.com", "user");
}
public static createAdminUser(): User {
return new User("Admin User", "admin@example.com", "admin");
}
public static createUserWithCustomRole(role: string): User {
return new User("Custom User", "custom@example.com", role);
}
}
// Ejemplo de uso en una prueba:
const defaultUser: User = ObjectMother.createDefaultUser();
console.log(defaultUser);
const adminUser: User = ObjectMother.createAdminUser();
console.log(adminUser);
const customUser: User = ObjectMother.createUserWithCustomRole("manager");
console.log(customUser);
En este ejemplo, además del método createDefaultUser()
, se han agregado dos métodos más a la clase ObjectMother
. El método createAdminUser()
crea y devuelve un objeto User
con la configuración de un usuario administrador, y el método createUserWithCustomRole()
permite crear y devolver un objeto User
con un rol personalizado especificado como parámetro.
Al utilizar el patrón Object Mother, podemos ver cómo la clase UserMother
proporciona una forma rápida y sencilla de crear y configurar objetos de la clase User
, sin tener que crear y configurar cada objeto manualmente. Esto puede ser especialmente útil cuando se necesitan crear muchos objetos de manera rápida, ya que permite una mayor eficiencia y simplicidad en el proceso de creación y configuración de objetos.
Deja una respuesta