2011-08-20 3 views
0

현재 내 모델에 대한 몇 가지 테스트를 작성하고 있습니다. 나는 Blog라는 하나의 모델을 가지고 있는데, 사용자가 블로그를 만들면 관찰자가 사용자의 뉴스 피드에 메시지를 게시합니다. 내 테스트 중 하나가 이것이 수행되고 있는지 테스트합니다. 그러나이 테스트는 테스트 환경에서 실패합니다. 콘솔 내에서 똑같은 일을 완벽하게 수행하면 rspec이 빠르게 작동하고 관찰자가 그 일을 끝내기를 기다리지 않는다고 믿게됩니다. 이 문제를 해결할 수있는 방법은 없나요? Ive는 잠을 시도했다. 그러나 doesnt는 일하는 것처럼 보인다.레일의 Rspec 및 옵저버

이것은 일반적인 디자인입니다.

블로그 옵저버 통지를 생성하고 새로운 뉴스 피드를 생성하고 뉴스 피드가 트리거됩니다 새로 만든 블로그 객체를 전달하며 블로그 객체의 메소드를 호출하여 올바른 뉴스 피드 메시지를 얻을 수있다. Newsfeed는 newsfeed_items 목록에 블로그를 추가하고 저장합니다.

옵저버가 작업을 마칠 때까지 기다리지 않아서 스펙이 실패하고, 뉴스 피드 오브젝트가 메시지를 다시 가져 오기 전에 오브젝트를 효과적으로 삭제하는 after 메소드를 호출합니다.

+0

나는 관찰자가 한 번 전화 한 후 다시는 찾지 않는다는 것을 알게된다. –

답변

2

옵저버는 비동기 적이 지 않습니다 (물론 옵저버 콜백에서 비동기 작업을 대기열에 넣지 않은 경우). 관찰 된 모델 자체는 콜백 메소드의 발신자입니다. 관찰자가 검사에서 관찰하지 않는 것 같습니다.

이 스레드를 발견하셨습니까? 어떤 용도로 사용할 수 있을까요?
How would you test observers with rSpec in a Ruby on Rails application?

+0

관찰자는 관찰자이고 어떤 모델은 일하고 어떤 것은 관찰하지 않는다. 그것 주위에 매우 별났다. – Pallinder