I was stupid - I automatically assumed that IRepository would work like the Entity Framework repository in that all actions are interally queued until you call SaveChanges; nope. What actually happens is that all changes are committed immediately when you use any CRUD operation on IRepository.
I discovered Batches last night, which are basically delayed queue actions. I should use those for tests, rather than IRepository.