Только Jest - addEventListener ~ щелкните утверждение

Вы сравниваете функции на разных уровнях абстракции.

Вы можете реализовать CalculateAverage(begin, end) либо как:

template<typename Iter>
double CalculateAverage(Iter begin, Iter end)
{
    return std::accumulate(begin, end, 0.0, std::plus<double>) / std::distance(begin, end)
}

, либо вы можете сделать это с помощью цикла for

template<typename Iter>
double CalculateAverage(Iter begin, Iter end)
{
    double sum = 0;
    int count = 0;
    for(; begin != end; ++begin) {
        sum += *begin;
        ++count;
    }
    return sum / count;
}

Первое требует, чтобы вы знали больше вещей, но как только вы их знаете, это проще и оставляет меньше возможностей для ошибки.

Он также использует только два генерических компонента (std::accumulate и std::plus), что часто бывает и в более сложном случае. У вас часто может быть простой универсальный функтор (или функция, простая старая функция может действовать как функтор) и просто сочетать его с любым алгоритмом, который вам нужен.

1
задан Cold Fridge 18 March 2019 в 15:00
поделиться

1 ответ

clickTrack подключает прослушиватель событий click и возвращает объект data, который будет обновляться всякий раз, когда происходит событие щелчка, поэтому вы должны вызывать clickTrack только один раз.

Прямо сейчас вы вызываете его снова после вашего события щелчка, поэтому он создает дополнительный прослушиватель click и возвращает новый пустой объект data.

Вы также захотите использовать e.target.text для текста и получить имена классов, вызвав split(' ') на e.target.className:

function clickTrack() {
  const data = {};
  document.addEventListener('click', function clicked(e) {
    if (e.target.matches('a')) {
      e.preventDefault();
      data['click.Classes'] = e.target.className.split(' ');
      data['click.ID'] = e.target.id;
      data['click.Destination'] = e.target.href;
      data['click.ElementText'] = e.target.text;
    }
  }, false);
  return data;
}

describe('Click Tracking', () => {

  test('Clicking on an a tag will collect its information', () => {
    const data = clickTrack();
    document.body.innerHTML = '<a class="j1 j2 j3" id="j" href="http://www.google.com/">Jest</a>';
    document.getElementById('j').click();
    expect(data).toEqual({
      'click.Classes': ['j1', 'j2', 'j3'],
      'click.Destination': 'http://www.google.com/',
      'click.ElementText': 'Jest',
      'click.ID': 'j'
    });  // Success!
  });

});
0
ответ дан brian-lives-outdoors 18 March 2019 в 15:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: