当前位置:   article > 正文

vue 2.0版本elementui test unit单元测试 mock axios vuex $route_element ui 测试版本

element ui 测试版本

记录一下,遇到的问题

1.vue 页面包含vuex ,axios

  1. //引用mount,能够加载elementui组件的HTML
  2. import { shallowMount, mount, createLocalVue, RouterLinkStub} from "@vue/test-utils";
  3. import Sample from "@/views/BookIndex.vue";
  4. import mockAxios from "axios";
  5. //axios 接口文件
  6. import api from '@/api'
  7. //vuex 文件
  8. import vuextest from '@/store'
  9. // elementui 组件
  10. import ElementUI from 'element-ui'
  11. const localVue = createLocalVue()
  12. //挂载elementui
  13. localVue.use(ElementUI)
  14. //模拟Header里面的this.$route.path
  15. const routes = {
  16. path: '/test',
  17. component: Sample,
  18. };
  19. const routertest= {
  20. push: jest.fn(),
  21. }
  22. const booklist = api
  23. describe("Sample.vue", () => {
  24. //模拟返回的数据
  25. const response = {
  26. data:{
  27. data:[ //这个data的属性名和.vue文件中axios中res.data.data;的第二个data名称是一样的
  28. {"bookId":10100,"bookName":"w_1","buyTime":"2021/02/28","bookBuyer":"test","bookBorrower":"test","bookVolume":1}
  29. ]
  30. }
  31. };
  32. //模拟调用的axios接口
  33. mockAxios.get.mockReturnValue(Promise.resolve(response));
  34. const wrapper = mount(Sample, {
  35. sync: false,
  36. localVue,
  37. // router,
  38. mocks: {
  39. $route: routes,
  40. $router: routertest,
  41. $api: booklist,
  42. $store: vuextest
  43. },
  44. stubs: {
  45. 'router-link': RouterLinkStub ,
  46. // 'Header':Header
  47. },
  48. });
  49. it("axios store", async() => {
  50. expect(wrapper.exists()).toBe(true);
  51. //get 是否调用了一次
  52. expect(mockAxios.get).toHaveBeenCalledTimes(1);
  53. expect(mockAxios.get).toBeCalledWith(
  54. "http://xx.xx.xx.xx:3030/findbook/all", {"params": {"searchBook": "", "searchBuyer": "", "selectSort": "在录"}}
  55. );
  56. // 点击搜索,也调用了一次
  57. await wrapper.find('button').trigger('click',{button: 0})
  58. expect(mockAxios.get).toHaveBeenCalledTimes(2);
  59. // 点击页数
  60. var page = wrapper.findAll('.el-pager .number').at(1)
  61. page.trigger('click')
  62. await wrapper.vm.$nextTick()
  63. console.log(page.text());
  64. //snapshot生存dom的html文件
  65. expect(wrapper).toMatchSnapshot();
  66. // expect(wrapper.vm.tableArr.length).toBe(1);
  67. wrapper.destroy()
  68. });
  69. });

2,api vuex见下图

关于mocks axios问题,需要在tests文件夹下建立__mocks文件

详细代码可见github地址GitHub - QianYiYi/vue-test-unit-mock-axios-vuex

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/753255
推荐阅读
相关标签
  

闽ICP备14008679号