簡體   English   中英

我的存根方法可以返回什么來模擬來自 Stripe gem 的真實響應?

[英]What can my stubbed method return to simulate a real response from the Stripe gem?

如果我想使用 rspec 創建存根,我通常會這樣做:

allow(my_object).to receive(:my_method).and_return("something else")

來自 Stripe 的 ruby gem 的 JSON 響應對 JSON 響應進行了包裝,例如:

[108] pry(main)> Stripe::Customer.retrieve("cus_NF2qXZzjMAfqMr")
=> #<Stripe::Customer:0x12cf0 id=cus_NF2qXXXXXXX> JSON: {
  "id": "cus_NF2qXXXXXXX",
  "object": "customer",
  "account_balance": 0,
  "address": {"city":"SF","country":"United States","line1":"2C","line2":null,"postal_code":"11111","state":"CA"},
  "balance": 0,
  "created": 1674752223,
  "currency": null,
  "default_currency": null,
  "default_source": null,
  "delinquent": false,
  "description": "My Customer",
  "discount": null,
  "livemode": false,
  "test_clock": null,
  # ... lots more fields
}

如果我正在測試與 Stripe API 交互的代碼,我該如何構造這個返回值?

在條帶對象的 class 上調用new (例如Stripe::Customer.new(field1: x, field2: y)不起作用:

[111] pry(main)> Stripe::Customer.new(email: 'my@randomemail.com').email
NoMethodError: undefined method `email' for #<Stripe::Customer:0x12d2c> JSON: {
}

更新:根據下面的評論,有一個改進的解決方案:

allow(Stripe::Customer).to receive(:create).and_return(
  Stripe::Customer.construct_from(
    email: 'my@randomemail.com'
  )
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2025 STACKOOM.COM