2
我正在創建一個與數據庫交互的GUI應用程序,因此我需要用於我的RSpec測試的燈具管理。我使用sqlite數據庫,並將編寫一個類,它將使用直接的SQL來操作數據。我需要測試它的數據庫交互功能。是否可以在不使用Rails的情況下使用FactoryGirl?
我找不到它可以做2個基本的東西,任何圖書館當我運行RSpec的測試:
- 清除數據庫或特定表中它
- 負載特定的數據到它,所以我可以使用該數據在我的測試
已經有數以萬計的博客文章和手冊中清楚地解釋如何使用FactoryGirl與任何版本的Rails,但沒有一個沒有它。我開始挖掘周圍,這是我(請注意,我不使用軌道和它的組成部分):
spec/note_spec.rb:
require 'spec_helper'
require 'note'
describe Note do
it "should return body" do
@note = Factory(:note)
note.body.should == 'body of a note'
end
end
spec/factories.rb:
Factory.define :note do |f|
f.body 'body of a note'
f.title 'title of a note'
end
lib/note.rb:
class Note
attr_accessor :title, :body
end
當我運行rspec -c spec/note_spec.rb
我得到以下:
F
Failures:
1) Note should return body
Failure/Error: @note = Factory(:note)
NoMethodError:
undefined method `save!' for #<Note:0x8c33f18>
# ./spec/note_spec.rb:6:in `block (2 levels) in <top (required)>'
問題:
- 是否有可能在所有使用FactoryGirl沒有護欄及護欄加載ActiveModel一樣/ ActiveRecord的庫?
- 因爲FactoryGirl正在尋找
save!
方法,是否必須繼承我的Note
課程? - 除了FactoryGirl還有其他更可行的解決方案嗎?
我完全新的到Ruby/RSpec的/ BDD,所以任何幫助將不勝感激;)
是的,「構建」似乎工作。所以FG期望我的課程實現'save!'方法? – galymzhan 2011-03-20 13:52:56
這是正確的;請參閱[create]的文檔(http://rubydoc.info/gems/factory_girl/1.3.3/Factory#create-class_method)。 – 2011-03-20 19:58:13
你會爲協會做些什麼? – 2013-10-22 00:16:18