[英]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.