鉴于这个非常微不足道的属性指令,它所做的只是将输入中的文本放入 innerText
import { Directive, ElementRef, Input } from '@angular/core';
@Directive({
selector: '[appTrivial]',
})
export class TrivialDirective {
@Input() set text(value: any) {
this.el.nativeElement.innerText = value.toString();
}
constructor(private el: ElementRef) { }
}
我正在尝试使用rerender
from@testing-library/angular
轻松更改输入:
import { render } from '@testing-library/angular';
import { TrivialDirective } from './trivial.directive';
describe('TrivialDirective', () => {
it('should replace case insensitive', async () => {
const template = `<div appTrivial text="qwe"></div>`;
const { container, rerender, fixture } = await render(template, { declarations: [TrivialDirective] });
expect(container.querySelector('div[appTrivial]').textContent).toEqual('qwe');
rerender({ template: `<div appTrivial text="rty"></div>` });
// fixture.detectChanges();
expect(container.querySelector('div[appTrivial]').textContent).toEqual('rty');
});
});
第二个断言不起作用 - 有或没有fixture.detectChanges()
.
那么,测试这样一个指令的正确方法是什么?尤其是 当您有几个输入并且您想在测试期间一次更改它们的所有值时。