Rocks
Rocks copied to clipboard
Consider Making `Expectations` to be Disposable
I just make RockRepository implement IDisposable "better", in that once Dispose() is called, you can't call members on it again without getting ObjectDisposedException.
I'm starting to wonder if Expectations<T> should do the same thing. In other words, make Dispose() do what Verify() does, enforce dispose semantics, and then remove Verify().
This would be a pretty big change, because I'm removing a member that used all over the place. But....it feels like this might be a better design. Definitely need to think this one through.
I would consider doing this if I go down this road.
Definitely considering doing this now.
Since RockRepository was deleted with 8.0.0, it may make sense to revisit this and see if it makes sense. I know when I tried it recently, there were test cases that ended up being a little awkward by doing this, but....worth another shot.
Note: I would put XML docs on Verify() that people should stop calling it, and move to handling the expectations objects as a disposable one. Eventually, I'd obsolete it, but not for the moment. Maybe have to put some defensiveness in both Verify() and Dispose() to not do it twice.
One idea is that Dispose() would only be concerned about any potential clean-up, like for SAMIs. It would not do the Verify() call for you, unless you haven't done it yet.