mox ios не работает должным образом при использовании window.axios - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть laravel проект. Я пытаюсь протестировать компонент vue, и он показывает ошибки: это мой тест: test.spe c. js

import { mount } from '@vue/test-utils';
import expect from 'expect';
import moxios from 'moxios';
import Post from '../../resources/js/components/Component.vue';

describe('Component',()=>{

    let wrapper;

   beforeEach(() => {

        moxios.install();  

        wrapper = mount(Component, {
            propsData: {
                data: {
                    id: 1,
                    name: 'Test'
                    lastname: 'Test
                }
            }
        });

   });

   afterEach(() => {
     moxios.uninstall();
   });

   it.only('updates the profile user after being liked', (done) => {  

      click('button.like');

      moxios.wait(() => {
            let request = moxios.requests.mostRecent()
            request.respondWith({
              status: 200              
            }).then(function () {
              seeText('1 likes')
              done()
            })
        });

   });

   let click = selector => {
        wrapper.find(selector).trigger('click');
   };    

});

Это компонент: Компонент. vue

<template>
    <div class="profile">                                                             

       <div>
        {{ name }}
       </div>
              <div>
        {{ lastname}}
       </div> 

       <button class="like" @click="like">Like</button>


    </div>  
</template>

<script>
export default {

  props:['data'],       

        data(){
            return {
                id:this.data.id,
                name: this.data.name,
                lastname :this.data.lastname
                .......

            };
        },

        methods:{

          like(){
                axios.post(`/user/${this.id}/likes`);
                ......

            }

        }

}
</script>

И при тестировании он показывает: ax ios не определен, но определяется глобально в ресурсах / js / bootstrap. js

window.axios = require('axios');

и он работает в браузере!

Затем я добавил это в Компонент. vue

<script>
import axios from 'axios';
.....
</script>

И теперь мои тесты работают нормально. но если удалить его, он снова не сможет. Я просто хотел знать, почему это происходит, я не уверен, нужно ли мне добавлять import ax ios из 'ax ios'; к каждому компоненту, который использует ax ios только для тестирования

1 Ответ

1 голос
/ 21 апреля 2020

В вашей настройке. js добавить топор ios как это:

require('jsdom-global')();

global.axios = require('axios');
...