bindSpy is a bit tricky, using an internal relaying key to bind the spy to the constructor injection point of the provided class. (Look at bindNewSpyProvider(Key<T> key) in TestModule)
Have you tried:
bind(Context.class).toInstance(spy(new Context("foo", "bar", "baz")));
I believe this would do what you're looking for.
If you want to investigate your idea further, though, the problem I see is that your proposed syntax would not be backwards compatible. (bindSpy would have to return an intermediate interface WITHOUT performing the actual bind, whereas it is currently expected to create the binding.) a possible option would be to overload the method:
bindSpy(Context.class, new Context("foo", "bar", "baz"));
(and all 4 variants)
Slightly more opaque, but at least you preserve backwards compatibility.
Another option might be to try to extend the Guice DSL and move Jukito in that direction:
bind(Context.class).toSpy();
bind(Context.class).toSpyInstance(new Context("foo", "bar", "baz"));
bind(Context.class).toMock();
I'm really not sure the DSL can be extended this way though. Sounds like a challenge. But anything in that direction could be interesting.
Cheers,
Philippe