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 <[email protected]> wrote:
>
>
> On Tue, Mar 15, 2011 at 10:08 AM, Justin Ko <[email protected]> wrote:
>>
>>
>> On Tue, Mar 15, 2011 at 8:57 AM, niku -E:) <[email protected]> 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
>>> [email protected]
>>> 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
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users