This looks really neat, having to re-specify the interface of the collaborators is generally a bunch of boilerplate you don't want to need!
Did you consider building on top of Sinon.JS and only having jest do the require/detect/build-mock part? Your mock API seems very similar.