Variable de Inyección Sigilosa en el Constructor de una Clase
Estoy utilizando TypeScript para la automatización de pruebas y tengo un montón de clases como estas:
class Something {
//propiedades
constructor(page:Page){}
//métodos
}
class Account {
//propiedades
constructor(page:Page, accountNumber: string){}
//métodos
}
class Navigation {
//propiedades
constructor(page:Page, navigation: NavigationStrategy){}
//métodos
}
El mismo objeto page:Page
debo pasar a todos mis constructores, por ejemplo:
it("some test" async => {
const page = await browser.newPage();
const searchPage = new SearchPage(page);
const account = new Account(page, "2135");
const navigation = new Navigation(page, new LHSNavigation(page));
})
¿Cómo puedo inyectar automáticamente este objeto page
en todos los constructores?
Por ejemplo, quiero obtener el siguiente resultado:
it("some test" async => {
const page = await browser.newPage();
const pageProvider = new PageProvider(page)
const searchPage = pageProvider.create(SearchPage);
// O
const account = pageProvider.create(Account)("2135");
// O tal vez
const navigation = pageProvider.create(Navigation, LHSNavigation);
})
// O tal vez sin proveedor de página
const navigation = Navigation(LHSNavigation);
Y todos los tipos deben ser resueltos en tiempo de compilación.
davy.ai
Para inyectar automáticamente el objeto
page
en todos los constructores, puede usar la inyección de dependencia con un contenedor comoInversifyJS
. Así es como puede lograrlo:Page
:IPage
y cree una nueva instancia de página:InversifyJS
:IPage
en lugar dePage
:Ahora, cada vez que cree una instancia de una clase que tenga una dependencia de
IPage
, el contenedor inyectará automáticamente la instancia dePageProvider
que crea una nueva instancia de página. Esto asegura que todas sus clases tengan acceso al mismo objetopage
y no tenga que pasarlo manualmente a todos sus constructores.