I understand that "expect{}.to change()" can't test "destructive method". So, I should write test like that. correct?
require 'rspec' class Ary attr_reader :ary def initialize @count = 0 @ary = [] increment end def increment @ary << @count @count += 1 end end describe Ary, "#ary" do subject{ Ary.new } it "should increment the ary" do # expect { subject.increment }.to change(subject, :ary).from([]).to([0]) subject.ary.should == [0] subject.increment subject.ary.should == [0,1] end end On Wed, Mar 16, 2011 at 2:41 AM, Justin Ko <jko...@gmail.com> wrote: > > > On Tue, Mar 15, 2011 at 10:08 AM, Justin Ko <jko...@gmail.com> wrote: >> >> >> On Tue, Mar 15, 2011 at 8:57 AM, niku -E:) <n...@niku.name> wrote: >>> >>> Hi. >>> >>> I'm using ruby1.9.2 and rspec2.5.1 >>> I want to use "expect{}.to change().from().to()" like this >>> >>> https://gist.github.com/870897 >>> >>> When Int class, it passed. >>> When Ary class, it failed. >>> >>> Why was Ary test failed and How do I pass this test? >>> >>> regards. >>> _______________________________________________ >>> rspec-users mailing list >>> rspec-users@rubyforge.org >>> http://rubyforge.org/mailman/listinfo/rspec-users >> >> Your Ary @ary variable is initialized as "[]". So of course calling >> increment on it will change it to "[0]". For your spec to pass, initialize >> it as "[0]" > > I'm completely wrong. Didn't read your code properly. Where is the delete > link? :) _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users