Используйте Rspec для проверки того, что метод не попадает в базу данных.

Я пишу тесты Rspec для кэширования в моем приложении Rails 3. Я использую Redis в качестве хранилища кеша.

У меня есть метод, который попытается извлечь данные из Redis и, если не найдет, будет использовать базу данных.

Есть ли способ проверить, что к базе данных нет доступа? (Поэтому я уверен, что данные взяты из Redis.)


person David Nix    schedule 21.04.2013    source источник


Ответы (1)


Если вы используете activerecord и rspec-mocks вы можете имитировать вызовы модели для повышения ошибки. Вот пример:

describe 'when cached' do
  it 'should not hit the database' do
    # first request should add the object to the cache
    get '/users/1'

    # make db calls fail
    expect(User).not_to receive(:find)

    # send the request again
    get '/users/1'
  end
end
person alf    schedule 21.04.2013
comment
Теперь это устарело - person Antoine Lizée; 22.05.2015
comment
@AntoineLizée, ага! старый ответ. Я только что обновил его до нового синтаксиса. Спасибо! - person alf; 24.05.2015