工厂女孩没有正确破坏物体

时间:2011-04-29 16:49:05

标签: ruby-on-rails ruby rspec factory-bot

我正在创建一个具有多个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 个答案:

答案 0 :(得分:5)

当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 

答案 1 :(得分:0)

您可以使用articles.count代替。 'Size'为您提供内存中集合的长度。 Count执行查询并从db获取最新的总数。