Използвайте 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