2011-08-24 3 views
0

RSpec으로 컨트롤러를 테스트하려고하는데 컨트롤러의 기능에 데이터베이스가 필요하기 때문에 문제가 있습니다. 로드 아무것도 없다 어떤 데이터베이스가 없기 때문에 그냥rspec-rails로 데이터베이스 실행

그러나 액티브 :: 자료에서 상속 MyResources가

@myallresources = Myrsources.all 

, @ :

컨트롤러에 코드 줄 뭔가처럼 보인다 myallresources는 빈 배열이므로 테스트가 실패하게됩니다. rspec을 실행하는 동안 데이터베이스에 연결하는 방법이 있습니까?

나는 RSpec과 레일에 매우 익숙하므로 어떤 도움을 주시면 감사하겠습니다. 감사.

답변

0

컨트롤러 사양에서 데이터베이스 연결을 사용하지 마십시오.

확인 http://rspec.info/rails/writing/controllers.html

은 기본적으로 당신이 조롱이나 사람들은 모델 사양에 개별적으로 테스트해야합니다으로, 당신의 액티브 모델을 스텁이이 페이지에 데이터베이스 분리에 대한 섹션을 참조하십시오. MyResource.all를 사용하는 작업의 describe 정의 테스트를 상주 같은 블록 안에이 넣어

before do 
    mocks = (1..3).map { mock_model(MyResource) } 
    MyResource.should_receive(:all).and_return(mocks) 
end 

: 다음은 간단한 예를 사용하여 mock_model입니다.

당신은 다음 링크에서 망신 시켰 및 스텁의 좋은 설명을 찾을 수 있습니다

:

관련 문제