【问题标题】:Properly testing an API wrapper for Recurly正确测试 Recurly 的 API 包装器
【发布时间】:2012-02-20 00:23:45
【问题描述】:

我正在考虑测试这个类的方法,它的接口只公开了两个方法,add_property 和 remove_property,它们只是包装了 Recurly API。

class SubscriptionManager

  def initialize(account_code)
    @account_code = account_code
  end

  def add_property
    subscription.update_attributes subscription_add_ons: [{ add_on_code: 'property', quantity: property_count + 1 }]
  end

  def remove_property
    subscription.update_attributes subscription_add_ons: [{ add_on_code: 'property', quantity: property_count - 1 }]
  end

  private

  def property_count
    subscription.add_ons.first[:quantity]
  end

  def subscription
     @subscription ||= Recurly::Subscription.find(@account_code)
  end
end

这是我正在尝试编写的测试的大纲,但我的目标不是使用 API,因为 Recurly gem 提供了一个很好的包装器和它自己的一组测试。但是,我开始认为我只能通过点击 API 来做到这一点。有人有什么想法吗?

describe SubscriptionManager do
  subject  { SubscriptionManager.new('1') }

  before do
    subscription = mock 'Subscription'
    Recurly::Subscription.stub(:find).with('1').and_return subscription
  end

  describe 'add_property' do
    it 'increases the quantity of the property add on' do

    end
  end

  describe 'remove_property' do

    it 'decreases the quanity of the property add on' do

    end
  end
end

【问题讨论】:

    标签: ruby unit-testing rspec isolation


    【解决方案1】:

    查看VCR gem - 它允许进行 API 测试,而无需在设置后点击 API。

    【讨论】:

    • 这不是我的意思,我想避免一起撞到模型。 API 已经过很好的测试,我不需要点击它,我可以准确地存根它并理解响应应该是什么。
    • @TheDelChop - 不幸的是,将响应存根并以这种方式测试您的代码是您在测试 API 包装器时必须做的事情
    猜你喜欢
    • 2014-03-22
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多