 <p>Actually, this is more likely due to the way ActiveRecord works. Your controller fetches the user from the database and creates <em>a new instance of User</em>. Now your controller and your test have references to two different users, which is why your test never sees the changes.</p> <p>You'll need to call <code>reload</code> on <code>user</code> before checking how many tasks there are again.</p> <p>Side-note: some ORMs provide an identity map (special type of registry) to get around this problem (actually... a quick Google seems to indicate Rails 3 recently got an Identity Map added to the source. I don't use AR, so not sure how you enable it).</p>