簡體   English   中英

在Rails控制器的單元測試中是模擬還是工廠?

[英]Mocks or factories in unit tests for a Rails controller?

我有一個帶有index方法的DashboardController ,它通過以下幾行與我的User模型進行交互:

def index
  user = User.first
  log_data = user.logs
  # more controller code here that uses the log_data
end

我正在為此index方法編寫控制器規格。 我為我的用戶模型定義了一個FactoryGirl工廠。 在這個單元測試,我應該嘲笑了user這里有instance_double某種,或我應該建立User與FactoryGirl對象? 是否有關於如何測試控制器的約定/標准/傾向?

我要說的是,不必嘲笑用戶對象-它只會使您的規格離現實更遠。 您可以像這樣高興地設置規格:

describe DashboardController, :type => :controller do

  let(:user) { create(:user) }

  describe "#index" do
    it "your test here" do
      ####
    end
  end

end

但是,在另一個訪問current_user對象的實例中,您可能會嘗試利用以下內容:

let(:user) { create :user }

before do
  allow(controller).to receive(:current_user).and_return(user)
end

暫無
暫無

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

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