我正在为我的 Rails 3 应用程序中的缓存编写 Rspec 测试。我使用 Redis 作为缓存存储。
我有一个方法会尝试从 Redis 中提取数据,如果没有找到,将使用数据库。
有没有办法测试数据库没有被访问?(所以我确信数据是从 Redis 中提取的。)
我正在为我的 Rails 3 应用程序中的缓存编写 Rspec 测试。我使用 Redis 作为缓存存储。
我有一个方法会尝试从 Redis 中提取数据,如果没有找到,将使用数据库。
有没有办法测试数据库没有被访问?(所以我确信数据是从 Redis 中提取的。)
如果您使用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