2014-04-22 50 views
0

我正在使用Rspec運行我的RoR應用程序的單元測試。 當我的控制器無法將新實體寫入數據庫時​​,它應該返回HTTP狀態500。 我希望測試此行爲,並且想暫時將我的數據庫標記爲只讀。使用Rspec/Rails模擬只讀數據庫

有誰知道是否有可能做到這一點?

我嘗試了「How do I prepare test database(s) for Rails rspec tests without running rake spec?」中提到的技術,但這種方法對我不起作用(因爲控制器在寫入數據庫之前先從數據庫讀取)。

回答

2

我想你可以模擬出相應的模型請求,如果你正在測試控制器。 那麼,Model.create扔什麼異常?嘗試是這樣的:

Model.stub(:create).and_raise(ActiveRecord::ReadOnlyRecord) 
+0

我想這應該時我會使用'Model.create'方法的工作,但我與'instance.save'組合使用'Model.new'。不太清楚在這種情況下我將如何使用'stub'。 –

+0

也許,stub'save'呢? –

+0

我認爲,如果你想*單元*測試,那麼就去跟蹤。如果你想要使用功能測試 - 而不是操縱數據庫。 –