簡體   English   中英

如何在Rails中為模型方法編寫rspec?

[英]How to write rspec for a model method in rails?

嗨,我在我要為其編寫rpec的EnrolledAccount模型中具有以下方法。 我的問題是我如何在rspec中創建Item和EnrolledAccount之間的關聯。

  def delete_account
    items = self.items
    item_array = items.blank? ? [] : items.collect {|i| i.id } 
    ItemShippingDetail.destroy_all(["item_id in (?)", item_array]) unless item_array.blank?
    ItemPaymentDetail.destroy_all(["item_id in (?)", item_array]) unless item_array.blank?
    Item.delete_all(["enrolled_account_id = ?", self.id])
    self.delete
  end

通常,您將使用factory_girl在數據庫中創建一組相關對象,可以對其進行測試。

但是,從您的代碼中,我得到的印象是您的關系建立不正確。 如果建立了關系,則可以指示rails自動刪除項目時的操作。

例如

class EnrolledAccount
  has_many :items, :dependent => :destroy
  has_many :item_shipping_details, :through => :items
  has_many :item_payment_details, :through => :items
end

class Item
  has_many :item_shipping_details, :dependent => :destroy
  has_many :item_payment_details, :dependent => :destroy
end

如果您的模型是這樣定義的,刪除將被自動處理。

因此,除了您的delete_account您可以編寫類似以下內容的內容:

account = EnrolledAccount.find(params[:id])
account.destroy

[編輯]使用諸如願或非凡的寶石,編寫規格也非常容易:

describe EnrolledAccount do
  it { should have_many :items }
  it { should have_many :item_shipping_details }
end

希望這可以幫助。

暫無
暫無

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

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