Rspec> тестирование представлений базы данных - PullRequest
6 голосов
/ 09 марта 2010

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

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

Спасибо

1 Ответ

3 голосов
/ 09 марта 2010

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...