Surrogate get a reflector block matcher: if it *was* told to write beforehand, then tell me fucking where record callers when capturing a block, can opt to invoke immediately, if later make assertions against that block, and they fail, also notify user that it was previously invoked (e.g. before conditions may be false) all arguments must be explicit rspec: expect(surrogate).was told_to... get rid of initialized_with matcher Urgent (things I want to do immediately, formatted as the git commits I will use) --------------------------------------------------------------------------------- * refactor the stupid interface code, api comparer is fucking gross * be smart enough to handle method missing * tests around the error messages of types and names * substitute_for should not depend on rspec-expectations * Error messages on blocks are actually useful TODO (next up after urgent, these will happen whenever I get around to it) -------------------------------------------------------------------------- * when trying to set a return value, error is NoMethodError will_have_whatever, but would be nice for it to say `UndefinedMethodError bad_stuff is not defined` * Eventually it should be smart enough to not ignore natively implemented code with a [[:req]] argument * Remove dependency on all of RSpec and only depend on rspec-core, then have AC tests for the other shit * Add a better explanation for motivations * Figure out whether I'm supposed to be using clone or dup for the object -.^ (looks like there may also be an `initialize_copy` method I can take advantage of instead of crazy stupid shit I'm doing now) * config: rspec_mocks loaded, whether unprepared blocks should raise or just return nil * extract surrogate/rspec into its own gem * make substitutability matcher not care whether either are surrogates Future Features (Things that probably should eventually happen, but not anytime soon unless I get really inspired to work on this shit) --------------------------------------------------------------------------------------------------------------------------------------- * Can endow a class multiple times, results aggregate instead of override * figure out how to talk about callbacks like #on_success * have some sort of reinitialization that can hook into setup/teardown steps of test suite (maybe, or maybe I'm happy with what I have) * Ability to disassociate the method name from the test (e.g. you shouldn't need to change a test just because you change a name) * ability to declare normal methods as being part of the API * ability to declare a define that uses the overridden method as the body, but can still act like an api method * assertions for order of invocations & methods * class generator? (supports a top-down style of development for when you write your mocks before you write your implementations) * deal with hard dependency on rspec-mocks