В настоящее время я пишу тесты для своего приложения Vue. У меня есть кнопка, которая вызывает функцию выхода. Я просто хочу проверить, вызывается ли функция при нажатии кнопки.
Я пытался издеваться над функцией с помощью jest.fn (), но не могу заставить ее работать. Я также попытался запустить метод и поместить в него console.log, но этот журнал не был вызван. Что я делаю неправильно?
это моя настройка оболочки:
let wrapper;
beforeEach(() => {
Vue.use(Vuetify);
Vue.prototype.$router = new VueRouter();
wrapper = shallowMount(Navigation);
});
afterEach(() => {
wrapper.destroy();
});
it('should call logout function on button click', function() {
let submitLogoutMock = jest.fn();
wrapper.vm.submitLogout = submitLogoutMock;
wrapper
.find('#logout-button')
.trigger('click');
expect(submitLogoutMock).toHaveBeenCalled();
});
Я ожидаю, что будет вызван фиктивный метод, но на самом деле я получаю сообщение об ошибке:
Error: expect(jest.fn()).toHaveBeenCalled()
Expected mock function to have been called, but it was not called.
click
событие или собственное, потому что сейчас похоже, что вы запускаете собственное событиеclick
. - person Husam Ibrahim   schedule 14.10.2019<v-btn icon id="logout-button" @click.native="logout">
Я снова попытался исследовать и добавил.native
, и теперь мой тест работает ... не могли бы вы объяснить, почему я действительно не понимаю разницы между обычным и обычным щелчком - person baxter3000   schedule 14.10.2019.native
прослушивает собственные события DOM, такие как событиеclick
, генерируемое элементомbutton
. По умолчанию при использовании сокращенийv-on
или the@
vue прослушивает пользовательские события , запускаемые с помощью$emit
. - person Husam Ibrahim   schedule 14.10.2019