2011-04-29 3 views
0

몇 가지 has_many 연관이있는 객체를 만듭니다. 객체를 빌드하는 것과 관련하여 모든 것은 잘 작동하지만, 어린이 또는 부모 중 하나의 삭제를 테스트하려고하면 테스트에 반영되지 않습니다. 예를 들어공장 소녀가 제대로 객체를 파괴하지 않습니다.

는 :

base_article = Factory(:base_article, :articles => [Factory(:article)]) 
p base_article.articles.size 
base_article.articles.first.destroy 
p base_article.articles.size 
base_article.destroyed?.should == true 

이 출력합니다 :

1

1

내가 콜백 이후에는이 때베이스를 삭제하지 않는 기사에 파괴 테스트입니다 더 많은 아이들. 기사 협회의 규모가 축소되지 않는 이유는 무엇입니까?

감사합니다.

답변

4

당신은 레일 '데이터베이스 캐싱 부실로 기사 모음을 다시로드해야합니다

base_article = Factory(:base_article, :articles => [Factory(:article)]) 
base_article.articles.size # => 1 

base_article.articles.first.destroy 
base_article.articles.size # => 1 
base_article.articles.reload.size # => 0 

base_article.destroyed?.should == true 
+0

안녕하십니까. 응답 해 주셔서 감사합니다. 재 장전이 작동한다는 것을 깨달았지만, 그 주위에 어쨌든 존재합니까? 해킹 같아 보이지? – Danny

+0

그것은 약간 해키처럼 보일지 모르겠지만, 다른 환경에서 제공하는 속도 향상을 위해 테스트/스펙을 참을만한 가치가 있습니다. –

0

대신 articles.count을 사용 할 수있다. '크기'는 메모리 내 모음의 길이를 나타냅니다. Count는 쿼리를 수행하고 db에서 최신 합계를 가져옵니다.

관련 문제