【问题标题】:How to test google analytics (garb) API with Rspec?如何使用 Rspec 测试谷歌分析 (garb) API?
【发布时间】:2023-03-06 00:16:01
【问题描述】:

我正在使用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,也很难设定预期。

我想我想要一个模拟课程?但我以前从未使用过这种模式。任何帮助都会很棒,即使只是一些让我走上正确道路的链接。

【问题讨论】:

  • 您可以尝试针对几个固定时间段进行测试;旧 GA 中的数据不会改变。

标签: ruby-on-rails testing rspec google-analytics bdd


【解决方案1】:

Fakeweb 是一个很好的起点。它可以将您的 SUT 与网络隔离,从而使慢速连接不会影响您的测试。

如果不了解有关 Garb 的更多信息,很难知道还能说什么。显然,您需要知道要从 API 发送和接收的数据的格式,以便制作适当的模拟/存根。

【讨论】:

【解决方案2】:

我建议创建一个模拟对 google API 的实际调用的测试接口。另一种选择是使用模拟来创建示例数据。

我同意最好不要使用实际的 API,因为这不会为您带来任何好处。由于 API 所有者更改了响应格式,因此对实际 API 的调用可能会在一天成功并在下一天失败。由于 GA 可能不会更改其版本化 API,因此我认为创建一个可在测试环境中使用以加快测试速度的接口是安全的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2015-09-09
    • 2016-11-28
    • 1970-01-01
    相关资源
    最近更新 更多