Как получить доступ к «испущенному» компоненту, доступ к которому осуществляется через ref? - PullRequest
0 голосов
/ 29 октября 2019

Я использую

vue2-daterange-picker

, в котором есть пользовательское событие с именем "update", которое я хочу протестировать.

<date-range-picker
  @update="updateValues"
  ref="datePicker"
  .
  .
 >     
 </date-range-picker>

Как я тестирую обновление пользовательского события в следующем коде. Я получаю доступ к DateRangePicker через ссылку в моем тестовом файле.

it('Test update custom event', () => {
  let datePicker = cmp.vm.$refs.datePicker;
  let startDate = new Date(2019, 5, 12);
  let endDate = new Date(2019, 7, 12);
  let dpValue = { startDate, endDate };
  datePicker.$emit('update', dpValue);
  expect(datePicker._self.__emitted).toHaveProperty('update');
  expect(datePicker._self.__emitted.update[0][0]).toEqual(dpValue);
 });

Способ, которым я получаю доступ к свойству emit, очень уродлив. Это работает, но это уродливо. Как я могу получить доступ к испущенному при доступе iam к компоненту через ref, как это выглядит в примере vue-test-utils. Что-то в этом роде:

const wrapper = mount(Component)
wrapper.vm.$emit('foo')
wrapper.vm.$emit('foo', 123)
expect(wrapper.emitted().foo).toBeTruthy()

Чтобы я мог получить что-то подобное гораздо более красивым способом. Я попробовал как пример здесь, но это не работает.

datePicker.$el.emitted().update

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 30 октября 2019

Я понял это.

   datePicker = cmp.find({ ref: 'datePicker' });
   datePicker.vm.$emit('update', new Date());
   expect(datePicker.emitted().update).toBeTruthy();
...