如何解决Stencil:模拟方法调用/特定函数
应该是最新的模具版本日期 15.02。:
运行规范测试时,测试无法运行,因为它在以下位置失败:
MockHTMLElement is missing assignedElements() method
规范测试目前编写如下:
import { newSpecPage } from '@stencil/core/testing';
import { mySelect } from '../my-select';
describe('my-select',() => {
it('renders',async () => {
const page = await newSpecPage({
components: [mySelect],html: `<my-select></my-select>`,});
expect(page.root).toEqualHtml(`
<my-select>
<mock:shadow-root>
<select class='my-select'></select>
</mock:shadow-root>
</my-select>
`);
});
});
my-select 包含几个部分,控件本身“真实”工作,但无法执行测试,因为:
componentDidLoad() {
const slotElement = this.host.shadowRoot.querySelector('slot') as HTMLSlotElement
this.select = this.host.shadowRoot.querySelector('select') as HTMLSelectElement;
let options = slotElement.assignedElements() as Element[];
options.forEach(opt => this.select.appendChild(opt));
this.select.removeChild(slotElement);
this.select.value = this.value;
this.initialized = true;
}
调试后,测试失败的原因是slotElement创建为MockHTMLElement(通过stencil),没有提供.assignedElements()方法。
那么,这里可以做什么?在 java 中,我只是模拟“HTMLSlotElement”并在assignedElements-Method 上创建一个间谍,以便执行进一步的测试。
我完全不知道如何在模板打字稿测试中实现这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。