On Sat, Jan 15, 2011 at 9:40 PM, Lille <lille.pengu...@gmail.com> wrote: > I guess I depart from the BDD line, because I feel that if I test a > module and I test that the host implements it when expected, then that > should be enough. For example, if I have a module whose single method > has four possible results and then I implement it in 4 hosts, I might > have to have as much as 16 tests versus my approach's 8, > alternatively.
(snip) > Of course, it seems like testing the invocations of the module has no > facility in RSpec, due, perhaps, to the BDD approach, which, I allow, > I may come to see as wiser, with more experience. RSpec provides easy access to message expectations for things like that. In the case of a single module included in several places, I would probably specify the behavior in one place (either directly against the model, or using a fake wrapper if necessary), and then use a message expectation to check that you've hooked everything up. E.g.: require 'spec_helper' class FilterTesterController < ApplicationController before_filter :some_filter, :only => [:wrap_some_filter] def wrap_some_filter # whatever end end describe FilterTesterController, "#some_filter" do before(:each) do MyApp::Application.routes.draw do get :wrap_some_filter, :to => 'filter_tester#wrap_some_filter', :as => 'originating' end end after(:each) do MyApp::Application.reload_routes! end it "does what I expect it to" do get :wrap_some_filter # expectation end end describe "One or all of your other classes that include the module" do it "is hooked up" do YourModule.should_receive(:the_method).with :some_params get :some_action # or YourClass.new.some_method or whatever end end Cheers, Katrina _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users