On Aug 27, 8:24 pm, Justin Ko <jko...@gmail.com> wrote: > On Aug 27, 8:18 pm, Myron Marston <myron.mars...@gmail.com> wrote: > > > > > > > One of the primary dangers of using mocks is that your unit tests may > > be testing against an interface that is different from that of your > > production objects. You may simply have misspelled the method (e.g. > > object.should_receive(:methd_name) rather than method_name), or you > > may have changed the interface of your production object without > > updating your tests. > > > Obviously, you should have some integration coverage that will catch > > these kinds of errors (and I do), but it's nice when they're caught by > > your unit tests since they're so much faster than integration tests. > > I've been using a pattern to help with this for a while: > > > it "safely mocks a method" do > > object.should respond_to(:foo) > > object.should_receive(:foo).and_return(:bar) > > object.do_something_that_calls_foo > > end > > > Basically, I add a respond_to? check before mocking or stubbing a > > concrete object (obviously, I don't do this for a pure mock object). > > If/when I rename the mocked method, I'll get a test failure. I think > > it'd be nice to add this to rspec-mocks itself. A few additional > > thoughts about this potential feature: > > > * This would only apply when you're mocking/stubbing concrete objects; > > on a pure mock or stub it wouldn't do the check. > > * Should this print a warning or raise an error so the test fails? > > * Should it be configurable? I could see some people not wanting this > > feature, particularly if you're strictly following the outside-in BDD > > process where the specs on the outer layers (say, a controller in a > > rails app) mock methods that have not yet been defined on the inner > > layers (say, a model in a rails app). > > * This feature could potentially take things a step further and when > > you specify mock arguments using `with`, it could check the arity of > > the method and be sure that the method accepts that number of > > arguments. > > > What do people think about this idea? > > > Myron > > _______________________________________________ > > rspec-users mailing list > > rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users > > What defines a "concrete object"? > _______________________________________________ > rspec-users mailing list > rspec-us...@rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
Anything that is not an RSpec stub object? _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users