Мне нужно написать модульный тест для компонента Single File в Vue JS. Мой проект основан на Vue Cli , и для тестирования я выбрал комбинацию Mocha / Chai.
Мой компонент использует Axios для загрузки некоторого JSON из URL до его монтирования. На данном этапе я не хочу издеваться над этой нагрузкой во время тестирования, я просто хочу, чтобы этот запрос не прошел, а затем отобразить некоторую информацию.
Очень упрощенный пример моего компонента Async.vue:
<template>
<div>
<h1>Async Request test</h1>
<b v-if="finished">Request finished</b>
</div>
</template>
<script lang="ts">
import { Component, Prop, Vue } from "vue-property-decorator";
import axios from "axios";
@Component
export default class AsyncRequest extends Vue {
finished = false;
beforeMount() {
axios.get("not/real/url").then((response) => {
this.finished = true;
},
(error) => {
this.finished = true;
});
}
}
</script>`
А это мой тестовый скрипт:
import { expect } from "chai";
import { shallowMount } from "@vue/test-utils";
import Async from "@/components/Async.vue";
describe("Async.vue", () => {
it("Renders 'Request finished'", (done) => {
const wrapper = shallowMount(Async, {});
wrapper.vm.$nextTick(() => {
expect(wrapper.text()).to.include("test"); // it passes
expect(wrapper.text()).to.include("finished"); // it fails
done();
});
});
});
Я ожидаю, что мой тест пройдёт.
Мне просто нужно протестировать мой компонент после того, как beforeMount закончится.
Позвольте мне еще раз подчеркнуть - я не хочу сейчас получать реальные или поддельные данные от axios.get.