What about having listeners on setup and teardown?<br>For example, a plugin of any nature can register on the setup and teardown events for each spec.<br><br><div><span class="gmail_quote">On 9/29/06, <b class="gmail_sendername">
David Chelimsky</b> &lt;<a href="mailto:dchelimsky@gmail.com">dchelimsky@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On 9/29/06, James Mead &lt;<a href="mailto:jamesmead44@gmail.com">jamesmead44@gmail.com</a>&gt; wrote:<br>&gt; I've now had requests from several people for a way of using Mocha (&amp;<br>&gt; Stubba) without a dependency on Test::Unit so it can interoperate with other
<br>&gt; testing frameworks. Given that this is the reason the current versions of<br>&gt; Mocha and RSpec don't play together, I thought you might be interested to<br>&gt; know I'm in the middle of making the necessary (relatively minor) changes to
<br>&gt; make this possible.<br><br>James,<br><br>That's awesome news. Thanks.<br><br>Our plan here is to continue to have an integrated stubbing/mocking<br>framework that is invoked by default, but allow other frameworks to be
<br>plugged in. To make that work most effectively, rspec needs some hook<br>into Mocha/Stubba (and vice versa) so that the verification of mocks<br>and resetting of stubs is seamless. Here's my current thinking:<br><br>rspec would support a runtime configuration bit that allows users to
<br>choose a mock framework. Something like this:<br><br>Spec::Mock.plugin = 'mocha'<br><br>In each specification, RSpec includes a module named<br>Spec::Mock::Plugin (or something like that) provided by mocha. This<br>would provide spec writers access to mocha's API.
<br><br>The plugin would have to support two methods for rspec: one to assign<br>a mock registry and one to verify a mock. Something like this:<br><br>module Spec<br>&nbsp;&nbsp;module Mock<br>&nbsp;&nbsp;&nbsp;&nbsp;module Plugin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;attr_writer :mock_registry
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;def verify mock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#do whatever mocha does to verify the mock<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#raise an exception if verification fails<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include XXX #module w/ mock creation methods, etc<br>&nbsp;&nbsp;&nbsp;&nbsp;end<br>&nbsp;&nbsp;end
<br>end<br><br>It would then be mocha's job to call &quot;mock_registry.register mock&quot; as<br>each mock is created and rspec's job to call verify(mock) at the end<br>of each specification.<br><br>Is this too complex? The thing I like about it is that rspec can make
<br>a few changes and any framework can offer itself up as a plugin w/<br>little effort.<br><br>Thoughts?<br><br>David<br>_______________________________________________<br>rspec-devel mailing list<br><a href="mailto:rspec-devel@rubyforge.org">
rspec-devel@rubyforge.org</a><br><a href="http://rubyforge.org/mailman/listinfo/rspec-devel">http://rubyforge.org/mailman/listinfo/rspec-devel</a><br></blockquote></div><br>