Sto provando a testare un componente di dialogo personalizzato con cui essere usato aurelia-dialog
che ottiene i vincoli di proprietà attraverso un activate()
metodo. Per testare il componente, sto configurando i test con a <compose>
elemento che utilizza anche il activate()
metodo in questo modo:
beforeEach(() => {
component = StageComponent
.withResources("path/to/dialogComponent")
.inView(`<compose view-model="path/to/dialogComponent" model.bind="mockModel">
</compose>`)
.boundTo(mockModel);
});
Tuttavia, quando vengo a testare il modello di vista per le proprietà vincolate, ottengo un valore nullo in corrispondenza del modello di visualizzazione attuale.
describe("#someComponentMethod()", () => {
it("Should exist", done => {
// In the past, I succesfully accessed child viewModels for
// compose through the following property, after a general package update,
// this seems not to work anymore
let viewModel = component.viewModel.currentViewModel
expect(viewModel.someComponentMethod).toBeDefined();
// ==> Runtime error, since currentViewModel === null
done();
});
});
Esiste un modo conosciuto o migliore per testare elementi personalizzati che non hanno proprietà associabili ma si basano su un modello per il quale essere vincolati activate()
?
Inoltre, per testare il rendering: sembra esserci un problema simile che potrebbe essere correlato: Aurelia Testing Composed Custom Element
risposte:
0 per risposta № 1puoi chiamare la funzione create e passare in boostrap importato da aurelia-bootstrapper in questo modo:
import { bootstrap } from "aurelia-bootstrapper";
...
component.create(bootstrap);
Quando chiamo create, viewModel è costruito epopolato. La funzione di creazione è attendibile in modo da poter accedere alla proprietà viewmodel in .then (() => component.viewModel) oppure utilizzare async / attendere in questo modo:
await component.create(bootstrap);