我刚刚注意到在设置默认值后,在请求之前无法更改值。
当我检查处理此请求的方法中的值时,它会显示event.data.object.closed = false
。
以下代码只是一个例子。
require 'rails_helper'
describe "stripe_invoice_created_webhook", type: :request do
let(:invoice){ create(:invoice, account_id: account.id) }
let(:account){ create(:account,
stripe_customer_id: event.data.object.customer)}
let(:event){ StripeMock.mock_webhook_event('invoice.created', {
closed: false
}) }
it 'responds 200 to invoice_created webhook with valid endpoint' do
event.data.object.closed = true
post '/stripe-events', event.as_json
expect(response.status).to eq 200
end
end
任何想法如何在发送一些
之前改变价值主要问题是如何有效地更改模拟值?
我可以为每个人写点什么。
event = StripeMock.mock_webhook_event('invoice.created', {closed: true } )
它有效,主要问题是如何像往常一样使let(:foo)
更清洁?
答案 0 :(得分:0)
你的mock_webhook_event
只是一个模拟,对正确呼叫的伪响应。你要做的是动态地改变模拟响应,好像它是实际的对象。
更好(尽管稍微冗长一点)将使用变量作为值
let(:closed_response) {false}
let(:event){ StripeMock.mock_webhook_event('invoice.created', {
closed: closed_response
}) }
然后在你的测试中...
closed_response = true
post '/stripe-events', event.as_json