簡體   English   中英

Ruby on Rails-隨機失敗的RSpec測試

[英]Ruby on Rails - Randomly failing RSpec tests

對不起,我的愚蠢問題。

我添加了外部api以獲取響應,以便檢查郵政編碼的有效性。

應用程序/驗證/ zipcode_validator.rb

class ZipcodeValidator < ActiveModel::Validator
  def validate(record)
    record.errors.add(:zipcode, :blank) if record.zipcode.blank?
    record.errors.add(:zipcode, :not_found) if WmsService.wms_delivery_dates(record.zipcode).nil?
  end 
end

它在實際中可以正常運行,但會隨機失敗,在我運行rspec時會花費更多時間。

對於這種情況有什么好的解決方案?

您不應在測試中調用外部API。 有幾種方法可以避免這種情況:

  1. VCR gem在第一次調用時記錄API響應,然后從磁盤中答復(這是快速而可靠的)。
  2. 模擬 HTTP調用,例如使用WebMock 您需要編寫指定的模擬請求並在您的規范中編寫響應。 它可以幫助您提高測試的可讀性,也有助於測試邊緣情況。
  3. 在類中包裝您的服務呼叫,並用RSpec存根替換它。
  4. 將服務調用包裝在接受適配器的類中。 適配器負責調用外部服務。 在測試環境中,通過具有預定響應的測試適配器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM