stenciljs 学习八 组件测试

Posted rongfengliang-荣锋亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stenciljs 学习八 组件测试相关的知识,希望对你有一定的参考价值。

测试对于框架来说比较重要,对于web 组件的测试同样很重要,类似的jest 很方便,stenciljs也是基于jest 开发的
包含两个核心api render(), flush()

测试配置

package.json 配置

 "devDependencies": {
      ...
      "@types/jest": "^21.1.1",
      "jest": "^21.2.1"
  },

npm script 配置

"scripts": {
      ...
      "test": "jest --no-cache",
      "test.watch": "jest --watch --no-cache"
  },

组件渲染测试

主要函数

  • render({components:[],html:string} ) 进行组件列表的渲染,html 是html 的代码片段,包含组件的使用
  • flush(element) 用来在属性变更之后刷新元素

渲染组件

  • components 组件列表
  • html html 片段
    参考
beforeEach(async () => {
  element = await render({
    components: [MyName],
    html: ‘<my-name></my-name>‘
  });
});

刷新组件

flush 函数

it(‘should work with both the first and the last name‘, async () => {
  element.first = ‘Peter‘
  element.last = ‘Parker‘;
  await flush(element);
  expect(element.textContent).toEqual(‘Hello, my name is Peter Parker‘);
});

组件测试

参考

  it(‘should least each part of the name breaking on spaces‘, async () => {
      element.first = ‘Pasta Primavera‘;
      element.last = ‘O Shea Buttersworth‘;
      await flush(element);
      const list = element.querySelector(‘ul‘);
      expect(list.children.length).toEqual(5);
      expect(list.children[0].textContent).toEqual(‘Pasta‘);
      expect(list.children[1].textContent).toEqual(‘Primavera‘);
      expect(list.children[2].textContent).toEqual(‘O‘);
      expect(list.children[3].textContent).toEqual(‘Shea‘);
      expect(list.children[4].textContent).toEqual(‘Buttersworth‘);
    });
    组件方法测试
    it(‘should return an empty string if there is no first or last name‘, () => {
     const myName = new MyName();
     expect(myName.formatted()).toEqual(‘‘);
    });

参考资料

https://stenciljs.com/docs/unit-testing

以上是关于stenciljs 学习八 组件测试的主要内容,如果未能解决你的问题,请参考以下文章

stenciljs 学习六 组件开发样式指南

stenciljs 学习四 组装饰器

StencilJS - 更新导致整个组件重新渲染的状态

stenciljs 学习五 事件

如何使用 TSX 使 StencilJS 组件在没有组件标签的情况下呈现?

如何在 Storybook React App 中嵌入 StencilJS 组件?