JasonBock / Rocks

A mocking library based on the Compiler APIs (Roslyn + Mocks)
MIT License
247 stars 20 forks source link

Consider Making `Expectations` to be Disposable #224

Open JasonBock opened 1 year ago

JasonBock commented 1 year ago

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.

JasonBock commented 1 year ago

I would consider doing this if I go down this road.

JasonBock commented 1 year ago

Definitely considering doing this now.

JasonBock commented 9 months ago

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.

JasonBock commented 5 months ago

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.

JasonBock commented 3 months ago

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.