Я создаю приложение с графическим интерфейсом, которое взаимодействует с базой данных, поэтому мне нужно управление приборами для моих тестов RSpec.Я использую базу данных sqlite и собираюсь написать класс, который будет манипулировать данными с прямым SQL.Мне нужно проверить его функциональность взаимодействия с базой данных.
Я не смог найти библиотек, которые могли бы выполнять 2 основных действия при запуске тестов RSpec:
- Очистить базу данных или определенные таблицы в ней
- Загрузите в него конкретные данные, чтобы я мог использовать эти данные в своих тестах
Уже есть десять тысяч постов и руководств в блогах, в которых четко объясняется, как использовать FactoryGirl с любой версиейРельсы, но никто без это.Я начал копаться, и вот что у меня есть (обратите внимание, что я не использую рельсы и их компоненты):
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 без Rails и библиотек Rails, таких как ActiveModel / ActiveRecord?
- Нужно ли создавать подкласс моего
Note
класса из определенного класса, поскольку FactoryGirl ищет метод save!
? - Есть ли другие, более приемлемые решения, кроме FactoryGirl?
Я совершенно новичок в Ruby / RSpec / BDD, поэтому любая помощь будет принята с благодарностью;)