Ruby on rails RSpec请求测试-在使用模拟发送请求之前分配更改值
我刚刚注意到,在设置默认值之后,无法在请求之前更改该值 当我检查处理此请求的方法中的值时,它显示Ruby on rails RSpec请求测试-在使用模拟发送请求之前分配更改值,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,我刚刚注意到,在设置默认值之后,无法在请求之前更改该值 当我检查处理此请求的方法中的值时,它显示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(:accoun
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
在发送一些之前,您知道如何更改值吗
==更新(2016年11月17日)===========
主要问题是如何有效地更改模拟值?
我可以为每个人写一些类似的东西
event = StripeMock.mock_webhook_event('invoice.created', {closed: true } )
它是有效的,主要问题是如何像往常一样使用
let(:foo)
使它更干净?您的mock\u webhook\u事件
只是一个mock,一个对正确调用的伪响应。您试图做的是动态更改模拟响应,就像它是实际对象一样
更好的方法(尽管稍微详细一些)是为值使用变量
let(:closed_response) {false}
let(:event){ StripeMock.mock_webhook_event('invoice.created', {
closed: closed_response
}) }
然后在你的测试中
closed_response = true
post '/stripe-events', event.as_json
您的
mock\u webhook\u事件
只是一个mock,是对正确调用的伪响应。您试图做的是动态更改模拟响应,就像它是实际对象一样
更好的方法(尽管稍微详细一些)是为值使用变量
let(:closed_response) {false}
let(:event){ StripeMock.mock_webhook_event('invoice.created', {
closed: closed_response
}) }
然后在你的测试中
closed_response = true
post '/stripe-events', event.as_json
你能分享你想写测试的代码吗?你能分享你想写测试的代码吗?谢谢你的回答!但我还是得到了同样的结果<代码>错误值。您是否在
关闭\u响应
分配之前引用事件
?引用后,:closed
的值将锁定。您应该将closed\u response=true
设置为测试的第一行。closed\u response
赋值位于测试块行的顶部。如果您更改let,测试是否正常(:closed…
默认为true?这可能是测试或代码中的问题。谢谢你的回答!但我仍然得到相同的结果…false
值。你是否在closed\u响应之前引用事件
赋值?一旦引用它,:closed
的值就会被锁定。你应该设置e> closed_response=true
作为测试的第一行。closed_response
分配位于测试块的行顶部。如果将let(:closed…
更改为默认值,测试是否正常?这可能是测试或代码中的问题。