Как подделать стрип в модульном тесте Django
Мы используем stripe для платежной системы, и stripe testing docs является ее тестовым документом. Я хочу подделать Stripe, чтобы протестировать нашу платежную систему, но общая стоимость счета-фактуры Stripe все время равна нулю.
Я высмеял stripe.InvoiceItem.create и stripe.Invoice.finalize_invoice и stripe.Invoice.create вот так:
@patch("app_name.models.stripe.InvoiceItem.create")
@patch("app_name.models.stripe.Invoice.finalize_invoice")
@patch("app_name.models.stripe.Invoice.create")
def test_method(
self,
mock_create,
mock_finalize,
mock_invoice_item,
):
response = MagicMock()
# api_key and stripe_account from this link https://stripe.com/docs/api/connected_accounts
response.api_key = "sk_test_MSc53AbTknQXPy"
response.stripe_account = "acct_1032D82eZvKYlo2C" # Stripe account ID
# last version here https://stripe.com/docs/upgrades
response.stripe_version = "2022-08-01"
mock_invoice_item.return_value = response
response = MagicMock()
response.total = 20
response.invoice_pdf = "https://google.com"
response.id = "sk_test_MSc53AbTknQXPy"
mock_create.return_value = response
mock_finalize.return_value = response.id
теперь я думаю, может мне стоит использовать stripe-mock каким-то образом для имитации stripe, но я не могу понять как?
Я действительно не знаю, как вы издеваетесь над различными функциями Stripe, чтобы точно определить проблему с общей стоимостью счета.
Если вы думаете использовать stripe-mock
, я полагаю, что лучший способ справиться с модульным тестированием - сделать это агностическим способом (независимо от стека), запустив stripe-mock
Docker, как описано на github Readme и создав прокси, который будет перенаправлять любой вызов API на URL Docker вместо фактического URL API (https://api.stripe.com). Это позволит вам проводить модульное тестирование локально на вашей машине и даже с помощью предпочитаемого вами CI/CD.
При этом следует помнить, что существуют некоторые известные ограничения, описанные в Readme doc.