On Oct 30, 2010, at 11:40 AM, Andrew Wagner wrote: > Ok, so here's the scenario. I have a top-level module, with a method called > load_file. It should take a file name, get the YAML module (Syck) to parse > it, and then send the result to a class, which should convert that result > into a series of objects. > > I'm not sure what specs, if any, I should write for load_file. I can get into > the nitty gritty details of exactly what methods it should be calling, but > that seems brittle. I can skip all that and just make assertions about the > final series of objects, but I'd rather put those specs on the class that's > actually doing the conversion. > > Suggestions? Here's the code that I (think I) want to drive out: > > module BTree > def self.load_file file_name > raw = YAML::load_file file_name > tree = BehaviorTreeCreator.new(raw).create > end > end
One approach would be: describe BTree do describe "::load_file" do let(:filename) { '/tmp/btree_example.yml' } let(:content) { "---\na: 1\n" } before { File.open(filename,'w') {|f| f.write content } } after { File.delete filename } it "reads and parses the content of the file" do BTree.load_file(filename).should eq(BehaviorTreeCreator.new(content).create end end end Assuming there are specs for BehaviorTreeCreator.new(content).create, then this tells the story pretty well without being terribly invasive. WDYT? David _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users