Factory Girl не уничтожает объекты должным образом - PullRequest
0 голосов
/ 29 апреля 2011

Я создаю объект с несколькими ассоциациями has_many. Все, что касается создания объекта tob, работает нормально, но когда я пытаюсь проверить удаление одного из дочерних или родительских элементов, это не отражается в тесте.

Например:

 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

Я проверяю функцию обратного вызова после уничтожения в статье, которая удаляет базу, когда дочерних элементов больше нет. Почему размер ассоциации статей не уменьшается на единицу?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 29 апреля 2011

Вам необходимо перезагрузить коллекцию статей, так как кэширование базы данных Rails устарело:

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 голосов
/ 09 мая 2011

Вместо этого вы можете использовать article.count.«Размер» дает вам длину коллекции в памяти.Count делает запрос и получает последнюю сумму из базы данных.

...