Rspec> тестирование представлений базы данных

Как представления базы данных могут быть протестированы в Rspec? Каждый сценарий перенесен в транзакцию, и данные не похожи на него, сохраняется к базе данных (MySQL в моем случае). Мое представление возвращается с пустым набором результатов, потому что ни одна из записей не сохраняется в транзакции. Я проверяю это, записи не хранятся путем установки точки отладки в моей спецификации и проверки моих данных с клиентом базы данных, в то время как спецификация отлаживается.

Единственным путем я могу думать, чтобы иметь мою работу представления, был бы то, если я мог бы фиксировать транзакцию до конца сценария и затем очистить базу данных после того, как сценарий завершен. Кто-либо знает, как выполнить это или является там лучшим путем?

Спасибо

6
задан Sean McCleary 9 March 2010 в 18:56
поделиться

1 ответ

Думаю, я понял. Чтобы не использовать транзакции, вам необходимо указать:

self.use_transactional_fixtures = false

Вы также должны обязательно очищать то, что вы создаете, после каждого сценария.

describe Attendee do
  self.use_transactional_fixtures = false

  def clear_all
    ActiveRecord::Base.connection.execute('delete from users')
    ActiveRecord::Base.connection.execute('delete from contact_info')
    ActiveRecord::Base.connection.execute('delete from events')
  end

  before(:each) do
    # create some test users
    @event = Factory.create(:event)
    @event.publish!
    @user = Factory.create(:user)
    @user_2 = Factory.create(:user_2)
  end

  after(:each) do
    clear_all
  end

  it "should list have attendees in the directory" do
    # in my case, Attendee class uses my attendees database view
    Attendee.count.should be 2
  end
end
3
ответ дан 17 December 2019 в 18:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: