0
새 Vue.js 프로젝트에서 테스트를 실행하는 동안 경고가 표시됩니다. 웹팩을 기반으로카르마 유닛 테스트에서 VueRouter가 정의되지 않았습니다.
ERROR LOG: '[Vue warn]: Error in render: "TypeError: Cannot read property 'resolve' of undefined"
found in
---> <RouterLink>
<Root>'
내가 Vue2을 사용하고
프로젝트 : 구성 요소는 프로그래밍 방식 this.$router.push('/');
으로 테스트는 이러한 경고를 전달하지만, 로그인되어 <router-link>
또는으로 템플릿에 라우터 중 하나를 사용하여 어디든지 프로젝트가 cli 도구로 생성됩니다.
내 단위 테스트하는 index.js :
import Vue from 'vue';
import VueNativeSock from 'vue-native-websocket';
import Router from 'vue-router';
Vue.use(Router);
Vue.use(VueNativeSock, process.env.WEBSOCKET_ADDR, { format: 'json', reconnection: true });
Vue.config.productionTip = false;
const testsContext = require.context('./specs', true, /\.spec$/);
testsContext.keys().forEach(testsContext);
const srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)/);
srcContext.keys().forEach(srcContext);
내 main.js :
import Vue from 'vue';
import VueNativeSock from 'vue-native-websocket';
import VueHead from 'vue-head';
import App from './App';
import router from './router';
Vue.config.productionTip = process.env.NODE_ENV === 'production';
Vue.use(VueNativeSock, process.env.WEBSOCKET_ADDR, { format: 'json', reconnection: true });
Vue.use(VueHead);
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
template: '<App/>',
components: { App },
head: {
link: [
{ rel: 'icon', href: '/static/favicon-32x32.png', sizes: '32x32', type: 'image/png' },
],
},
});
난 도망 갈이 경고를 얻을 누락 어떤 생각? 다음과 같을 수
기본 테스트 : 당신의 루트는 테스트 환경에서 어디 설정되지 않을 수 있습니다처럼
import Vue from 'vue';
import ViewDTCs from '@/components/ViewDTCs';
describe('ViewDTCs.vue',() => {
const Constructor = Vue.extend(ViewDTCs);
const vm = new Constructor().$mount();
ViewDTCs.$socket = new WebSocket(process.env.WEBSOCKET_ADDR);
it('has a created hook',() => {
expect(typeof ViewDTCs.created).to.equal('function');
});
it('should render page',() => {
expect(vm.$el.textContent).to.contain('Retrieving DTCs');
});
});
감사 - 나는 당신이 뭔가에 분명히 것 같아요. Vue 구성 요소 중 하나에 대한 예제 테스트를 추가했습니다. 나는 카르마를 사용하고있다. 당신의 예는'wrapper'를 정의하지 않은 채로 남겨두고있다. - 나는 beforeEach가 제대로 실행되는지 확신하지 못한다. 거기에 라우터를 지미하기 위해 현재 생성자와 할 수있는 일이 있습니까? –
@Vouure Vue의 공식적인 단위 테스트 라이브러리이기 때문에'vue-test-utils'를 사용하는 것이 좋습니다. 나는 몇 백 가지의 테스트에서 이것을 어떻게 사용 하는지를 보여주기 위해 좀 더 완벽한 예제를 추가했다. (위의'mount' 함수에서 라우터를 구성 요소에 넣고있다.) – Franey
예! 그게 다 고쳐 졌어. 당신의 도움을 주셔서 감사합니다 –