typescript - Aurelia StageComponent - hur man renderar en barnkomponent i DOM-trädet?
Om jag har en app.html-mall som följer:
<template>
<require from="./MyComponent"></require>
<h1>${message}</h1>
<my-component>test</my-component>
</template>
Med MyComponent.ts :
export class MyComponent {
myName : string;
}
Och MyComponent.html:
<template>
MyComponent
</template>
Följande enhetstest kommer alltid att misslyckas:
import {App} from '../../src/app';
import {StageComponent} from 'aurelia-testing';
import {bootstrap} from 'aurelia-bootstrapper';
describe('the app', () => {
var app ;
beforeEach(() => {
app = StageComponent
.withResources('app')
.inView(' <require from="./MyComponent"></require>' +
'<h1>${message}</h1>' +
'<my-component>test</my-component>')
.boundTo(new App());
} );
it('says hello', (done) => {
app.create(bootstrap).then( () => {
var myComponent = document.querySelector('my-component');
expect(myComponent.innerHTML).toContain('MyComponent');
done();
});
});
});
Observera att StageComponent korrekt ersätter $ {message} i mallen för app.html, men skapar inte en ny MyComponent-instans. När detta körs i webbläsaren genereras följande DOM:
<h1>Hello World!</h1>
<my-component class="au-target" au-target-id="2">
MyComponent
</my-component>
Men när samma kod körs genom StageComponent i ett test, blir den genererade DOM:
<h1>Hello World!</h1>
<my-component>test</my-component>
Vad missar jag?
Svar #1
Inte säker, men jag tror att du behöver göra det här (eller är det valfritt att lägga till customElement?)
import {customElement, bindable} from 'aurelia-framework';
@customElement('my-component')
export class MyComponent {
@bindable myName : string;
}
då
it("test case", done =>
StageComponent
.withResources("./full/path/to/MyComponent")
.inView("<my-component></my-component>"))
.create(bootstrap)
.then(() => {...})
.then(done);
Det är inte riktigt klart för mig varför du lägger till samma HTML som finns i app.html, är det för att visa att det fungerar, men inte för en komponent?
Eller vad är det som du vill testa?
- Vill du testa om appens vy renderas korrekt med dess komponenter?
- Eller om den anpassade MyComponent renderar korrekt?
