Как протестировать API Google Analytics (Garb) с помощью Rspec? - PullRequest
2 голосов
/ 28 января 2011

Я использую garb gem , чтобы получить некоторые основные статистические данные, например просмотры страниц, из Google Analytics. Все работает правильно, но я не могу найти лучший способ проверить мои вызовы API. Вот парная версия моего класса Analytics:

class Analytics
  extend Garb::Model

  metrics :pageviews
  dimensions :page_path

  Username = 'username'
  Password = 'password'
  WebPropertyId = 'XX-XXXXXXX-X'

  # Start a session with google analytics.
  # 
  Garb::Session.login(Username, Password)

  # Find the correct web property.
  # 
  Property = Garb::Management::Profile.all.detect {|p| p.web_property_id == WebPropertyId}

  # Returns the nubmer of pageviews for a given page.
  # 
  def self.pageviews(path)
    Analytics.results(Property, :filters => {:page_path.eql => path}).first.pageviews.to_i
  end

  # ... a bunch of other methods to pull stats from google analytics ...
end

Довольно просто. Но помимо обеспечения того, что константы установлены, я не смог написать эффективные тесты. Какой лучший способ проверить что-то подобное? Вот некоторые из проблем:

  • Я бы предпочел не использовать API в моих тестах. Это медленно и требует подключения к интернету.
  • Статистика, очевидно, все время меняется, что затрудняет определение ожиданий, даже если я проверяю API при тестировании.

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

Ответы [ 2 ]

1 голос
/ 30 января 2011

Fakeweb - хорошее место для начала.Он может изолировать вашу SUT от сети, чтобы медленные соединения не влияли на ваши тесты.

Трудно понять, что еще сказать, не зная больше о Garb.Очевидно, что вам нужно знать формат данных, которые будут отправлены и получены из API, чтобы вы могли делать соответствующие макеты / заглушки.

0 голосов
/ 01 февраля 2011

Я бы предложил создать интерфейс тестирования, который имитирует реальные вызовы API Google. Другой вариант - использовать макеты для создания образцов данных.

Я согласен с тем, что лучше не использовать настоящий API, поскольку это ничего вам не даст. Вызов действительного API может в один прекрасный день завершиться неудачей, а в следующий - завершиться неудачей, поскольку владельцы API меняют формат ответа. Поскольку GA, вероятно, не изменит свой версионный API, я думаю, что безопасно создать интерфейс, который вы можете использовать в своих тестовых средах для более быстрого тестирования.

...