Our production systems use deployed obj code, so we can't upgrade cache versions without a new set of cache.dat's. We've been thinking a bit about how to best go about this as well.

Right now version jumps are a bit of a major effort and we're lagging behind on 2014.1. We're hoping to solve this with Docker for our linux sites - essentially by bundling cache with our product and distributing it all as one self-contained unit. Not too sure how to do this with windows yet (msi installer?).

That way our dev/test/prod upgrade process becomes "docker run $product:latest" or "msiexec /i $product-latest.msi". Docker/msi contain whatever version of cache the product version requires, rather than expecting the correct version to be installed (and potentially breaking if it isn't) .

Still yet to roll this out - I'll let you know how it goes (or has anyone else done something similar? ;)

OT: I couldn't add this as an "answer" (get the option to type it in, but the only buttons are Save & Preview). Not sure where this comment will go..

At the moment we mock pretty infrequently. We're doing so manually by subclassing and overriding the method implementation. I imagine you could create a generic mock object for any method with nice syntax sugar using the Dynamic Dispatch methods.

One of the showstoppers we have with mocking in objectscript is that it is not global - ie. we can't mock classes called by the implementation (without doing some sort of dependency injection) and there's no way at all to mock calls into routines. Anyone have any thoughts on overcoming these limitations?