2016-01-23 16 views
0

賽程?爲什麼夾具需要在表格中有一個匹配的列?Ruby on Rails的4個燈具使用Rails(我的環境的Rails 4.2)</p> <p>爲什麼運行測試時,爲什麼它當一個固定存在,但沒有一個表具有相同名稱錯誤時需要表

實施例1:(表中不存在)

  • 創建一個夾具joes.yml(喬的表不存在)
  • 運行耙測試:集成
  • 錯誤你」將獲得的是:

的ActiveRecord :: StatementInvalid:SQLite3的::的SQLException:沒有這樣的表:喬斯:DELETE FROM 「招財」

實施例2:(表中存在,但列不)

  • 創建一個夾具products.yml。這種情況下,產品確實存在
  • 添加一個yml塊,其中包含產品表中沒有的列的名稱。例如添加其他條目:集成

的ActiveRecord ::夾具:: FixtureError:表中 「產品」 有沒有指定的列 「其他」 在products.yml文件

  • 運行rake測試BLA

    我想我可以在我的測試中使用燈具作爲參考的常用位置,但不需要與我的數據庫相匹配。

  • 回答

    2

    賽程是你的數據,他們仍然需要一個地方去!

    「Fixtures允許您在測試運行之前用預定義的數據填充測試數據庫,Fixtures獨立於數據庫,用YAML編寫,每個模型有一個文件。

    http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures

    他們不是某種在內存更換爲測試數據庫,他們只是讓你預填充值測試數據庫,這樣就可以測試更方便,而不必把大量的數據在設置測試運行時。就這樣。

    +1

    如果我想測試創建用戶。然後驗證用戶信息是否正確,是否有將這些信息置於每次測試之外的硬編碼之外的地方? – user8745303

    +0

    好吧 - 我個人使用FactoryGirl來處理那種事情https://github.com/thoughtbot/factory_girl,但是像fixtures這樣的東西,我會有我的用戶測試,這將會創建一個user1 - 長途跋涉,手動測試,並在我的燈具中創建一個單獨的user2,這可用於我所有其他測試。 – Tim

    相關問題