Как тестировать методы с аксиосами внутри, не издеваясь над ними - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть мой сайт в VueJs и API в Go. Я хотел бы проверить методы, которые я написал, например зарегистрироваться. Эти методы имеют вызовы API, используя Axios. Я нашел тонны учебников, объясняющих, как подделать API, но в моем случае я просто хотел бы использовать настоящий API.

На данный момент это мой тестовый файл:

import Vue from 'vue'
import { mount } from '@vue/test-utils'
import Register from './Register.vue'
import Vuetify from 'vuetify'
import ElementUI from "element-ui"
import localApi from "@Util/localApi"

Vue.use(Vuetify)
Vue.use(ElementUI)
Vue.use(localApi)

describe('Register', () => {
  const wrapper = mount(Register, {
    attachToDocument: true
  })

  it('RegisterForm', () => {

    expect(wrapper.vm.registerForm.cp).toBe("")
    wrapper.find('#inputCP').setValue('login')
    expect(wrapper.vm.registerForm.cp).toBe("login")

    expect(wrapper.vm.registerForm.password).toBe("")
    wrapper.find('#inputPassword').setValue('password')
    expect(wrapper.vm.registerForm.password).toBe("password")

    expect(wrapper.vm.registerForm.confirm).toBe("")
    wrapper.find('#inputConfirm').setValue('confirm')
    expect(wrapper.vm.registerForm.confirm).toBe("confirm")

    expect(wrapper.vm.registerForm.nom).toBe("")
    wrapper.find('#inputNom').setValue('nom')
    expect(wrapper.vm.registerForm.nom).toBe("nom")

    expect(wrapper.vm.registerForm.prenom).toBe("")

    wrapper.find('#inputPrenom').setValue('prenom')
    expect(wrapper.vm.registerForm.prenom).toBe("prenom")

    wrapper.find('#inputConfirm').setValue('password')

    wrapper.find('#buttonRegister').trigger('click')
    expect(wrapper.vm.registerForm.password).toBe("passwordd") //to check if the value changed, and if yes, what is the new value in the terminal
  })
})

метод, который я называю

    onSubmit() {
      this.$refs["registerForm"].validate(valid => {
        if (valid) {
          this.registerForm.password = "passwordd"
          localApi
            .put("/register", this.registerForm)
            .then(response => {
              this.registerForm.password = response.response.data
            })
            .catch(err => {
              this.registerForm.password = err.response.data
            });
        }
      });
    }

И, в случае, это мой файл localApi:

import axios from 'axios'
import constants from './constants'

const localApi = axios.create({
    baseURL: constants.API_BASE_URL,
    withCredentials: true
});

export default localApi;

Тесты прошли без ошибок, но (это некрасиво, я согласен) Я изменил тесты, чтобы видеть, куда идет код, и он не входит в then () или catch () ...

Мой API запущен, и я ничего не получил в логах. Может быть, я забыл импортировать вещи в моем тестовом файле? Я не знаю ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...