On Tue, Jul 14, 2009 at 9:59 PM, Zhenning Guan<li...@ruby-forum.com> wrote: > > class PeepCode > def awesome > "awesome" > end > end > > describe PeepCode do > it "should fuck" do > PeepCode.new.should_receive(:awesome).and_return("awesome") > end > end > > ----------------------------------------- > Spec::Mocks::MockExpectationError in 'PeepCode should fuck' > #<PeepCode:0xb7aa3bbc> expected :awesome with (any args) once, but > received it 0 times > ./simple_spec.rb:13: > > Finished in 0.006159 seconds > > 1 example, 1 failure > > ------------------------------------------ > > > what's wrong with my code?
You asked a similar question yesterday and I tried to explain. Did you not receive my response? should_receive sets an expectation that a subsequent event will cause the PeepCode object to receive the :awesome message. There is no code after that expectation is set, so the message is never received, and the expectation fails. That's exactly what the error message is telling you: <PeepCode:0xb7aa3bbc> expected :awesome with (any args) once, but received it 0 times. If you're trying to specify that the PeepCode object should return "awesome" when you call the awesome() method, then the example should look like this: describe PeepCode, "#awesome" do it "should return 'awesome'" do peepcode = PeepCode.new peepcode.awesome.should == "awesome" end end There's no need to set a message expectation (e.g. mock) here. HTH, David ps - I think it's OK to say "fuck" on this list, if that's what you really mean, but I don't really understand what you're getting at with the expectation that PeepCode should fuck. Perhaps you might consider being a bit more careful about the examples you send. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users