tab.spec.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { shallowMount, mount } from '@vue/test-utils'
  2. import Tab from '../tab.vue';
  3. import Vue from 'vue';
  4. describe('Tab.vue', () => {
  5. const wrapper = mount(Tab);
  6. wrapper.setData({ tabTitleList: [
  7. {
  8. tabTitle: "衣物",
  9. content: "<p>衣物内容</p>"
  10. },
  11. {
  12. tabTitle: "日用品",
  13. content: "<p>日用品内容</p>"
  14. },
  15. {
  16. tabTitle: "运动器材",
  17. content: "<p>运动器材内容</p>"
  18. },
  19. {
  20. tabTitle: "电影票",
  21. content: "<p>电影票内容</p>"
  22. }
  23. ]});
  24. it('当前tab的位置', () => {
  25. wrapper.setProps({ positionNav: 'left' });
  26. return Vue.nextTick().then(function () {
  27. expect(wrapper.contains('.nut-tab-title-leftnav')).toBe(true);
  28. })
  29. });
  30. it('当前tab是否可以滑动', () => {
  31. wrapper.setProps({ isScroll: 'true' ,positionNav:'top'});
  32. return Vue.nextTick().then(function () {
  33. expect(wrapper.contains('.nut-title-nav-scroll')).toBe(true);
  34. })
  35. });
  36. it('当前tab包含滑动的底部导航条', () => {
  37. wrapper.setProps({ scrollLine: 'true' ,positionNav:'top'});
  38. return Vue.nextTick().then(function () {
  39. expect(wrapper.contains('.nav-bar-top')).toBe(true);
  40. })
  41. });
  42. it('当前tab包含点击式的底部导航条', () => {
  43. wrapper.setProps({ tabLine: 'true' ,positionNav:'top'});
  44. return Vue.nextTick().then(function () {
  45. expect(wrapper.contains('.tab-line')).toBe(true);
  46. })
  47. });
  48. it('当前tab默认活动的页签是否正确', () => {
  49. wrapper.setProps({ tabLine: 'true', positionNav:'top'});
  50. wrapper.setData({ activeIndex: 1});
  51. return Vue.nextTick().then(function () {
  52. expect(wrapper.findAll('.nut-title-nav').at(1).contains('.nut-tab-active')).toBe(true);
  53. })
  54. });
  55. it('当前tab设置高度是否生效', () => {
  56. wrapper.setProps({wrapperHeight:'250', positionNav:'left'});
  57. return Vue.nextTick().then(function () {
  58. expect(wrapper.findAll('.nut-tab-item').at(0).hasStyle('height','250px')).toBe(true);
  59. })
  60. });
  61. it('点击tab事件', () => {
  62. wrapper.setProps({positionNav:'top'});
  63. return Vue.nextTick().then(function () {
  64. wrapper.findAll('.nut-title-nav').at(2).trigger('click');
  65. expect(wrapper.findAll('.nut-title-nav').at(1).contains('.nut-tab-active')).toBe(true);
  66. })
  67. });
  68. });