我有一个单元测试来检查方法是否执行以下操作:
- 查找具有特定值的模型的所有实例,
- 将它们更改为另一个值,
- 将模型保存到数据库。
该方法似乎正在做它应该做的事情,但测试数据库似乎正在恢复到原始值。
class PostTest < ActiveSupport::TestCase
test "publish queued posts" do
post = Post.new({:published => 'queue'})
post.save
Post.handle_queue
assert(post.published == 'published', "post should be published. actual value: #{post.published}")
end
end
test_publish_queued_posts(PostTest) ../test/unit/post_test.rb:13]:
post should be published. actual value: queue
单步执行代码,很明显post
'published' 属性设置为published
,但在该点和断言之间的一段时间内,该值又更改回queue
。
这是可怕的混乱。你知道这里发生了什么吗?如果这有什么不同,我将使用 mongo_mapper 进行持久性。