[英]How do you test your Config/Initializer Scripts with Rspec in Rails?
所以我在網上搜索解決方案,但似乎很少有關於測試在 Rails 中創建的初始化程序的信息。
目前,我已經在我的 config/initializers/retrieve_users.rb 文件中編寫了一個相當大的 API call-n-store。 它發出 API 請求,解析 JSON,然后將數據存儲為用戶。 相當可觀,我還沒有想出最干凈的方法來測試它。 由於我需要在運行任何函數之前檢索用戶,因此我不相信我可以將此腳本移至其他任何地方(盡管歡迎其他建議)。 我對此有幾個問題:
謝謝!
我只是試了一下,並通過了 rspec 測試,我將進一步重構我的代碼,最后它會更短,但這里是我所做的快照,使用此鏈接作為指南:
它的要點是:在你的初始化文件中用你想要的函數創建一個類,然后對類中的函數編寫測試。
配置/初始化程序/stripe_event.rb
StripeEvent.configure do |events|
events.subscribe 'charge.dispute.created' do |event|
StripeEventsResponder.charge_dispute_created(event)
end
end
class StripeEventsResponder
def self.charge_dispute_created(event)
StripeMailer.admin_dispute_created(event.data.object).deliver
end
end
規范/配置/初始化程序/stripe_events_spec.rb
require 'spec_helper'
describe StripeEventsResponder do
before { StripeMock.start }
after { StripeMock.stop }
after { ActionMailer::Base.deliveries.clear }
describe '#charge_dispute_created' do
it "sends one email" do
event = StripeMock.mock_webhook_event('charge.dispute.created')
StripeEventsResponder.charge_dispute_created(event)
expect(ActionMailer::Base.deliveries.count).to eq(1)
end
it "sends the email to the admin" do
event = StripeMock.mock_webhook_event('charge.dispute.created')
StripeEventsResponder.charge_dispute_created(event)
expect(ActionMailer::Base.deliveries.last.to).to eq(["admin@example.com"])
end
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.