#vue.js #vue-test-utils
Вопрос:
Я пытаюсь протестировать свой дочерний компонент, но у меня проблема с родительским методом. Я использую $slot
$parent
в своем коде. Я получаю эту ошибку, когда срабатывает метод:
expect(jest.fn()).toHaveBeenCalled() Expected number of calls: gt;= 1 Received number of calls: 0
Я вызываю родительский метод из дочернего:
// html lt;div @click="onClick"gt; lt;span data-qa="text"gt;{{ text }}lt;/spangt; lt;/divgt; // script onClick() { ... this.$parent.someParentMethod() }
Родительский метод:
methods: { someParentMethod() { this.$slots.default.forEach(({ componentInstance }) =gt; { if (componentInstance) { componentInstance.$data.localActive = false componentInstance.$data.error = false } }) } }
Мой тест:
const createComponent = (options = {}) =gt; { wrapper = shallowMount(Child, { parentComponent: Parent }) } test('Testing click', async () =gt; { createComponent() const parentMethod = jest.spyOn(wrapper.vm.$parent, 'someParentMethod') const childDomElement = wrapper.find('[data-qa="text"]') // child dom el await childDomElement.trigger('click') await wrapper.vm.$nextTick() expect(parentMethod).toHaveBeenCalled() })
Триггер работает правильно, но parentMethod
не запускается. Как я могу это исправить?