FactoryGirl을 사용하여 모델의 메모리 스텁을 작성한 다음 모든 ActiveRecord 쿼리 만 모델에 대해 실행하도록합니다. 예 :RSpec 테스트에서 데이터베이스 사용을 완전히 피하는 방법은 무엇입니까?
# Assume we start with an empty database, a Foo model,
# and a Foo factory definition.
#foo_spec.rb
stubbed_foo = FactoryGirl.build_stubbed(:foo)
# Elsewhere, deep in the guts of application
Foo.first() # Ideally would return the stubbed_foo we created
# in the test. Currently this returns nil.
해결 방법은 메모리 내장 데이터베이스를 사용하는 것일 수 있습니다. 그러나 위의 시나리오가 가능합니까?
테이블이 없으면 모델을 따르는 스키마가 없으므로 스터브 된 모델은 실제 스키마와 일치하지 않아도 모든 개체처럼 작동 할 수 있습니다. 생산에 존재할 것이다. 이것은 아마도 나쁜 생각 일 것입니다. 이런 식으로 ActiveRecord를 우회하는 이유는 무엇입니까? –
공장 소녀 대신 조명기를 사용할 수 있습니다 – trueinViso
@trueinViso Foo 클래스가'first()'또는 다른 쿼리 메서드를 호출 할 때 여전히 데이터베이스로 이동하므로 픽스처가 문제를 해결할 것이라고 생각하지 않습니다. –