Hi.
I’m using ruby1.9.2 and rspec2.5.1
I want to use “expect{}.to change().from().to()” like this
When Int class, it passed.
When Ary class, it failed.
Why was Ary test failed and How do I pass this test?
regards.
Hi.
I’m using ruby1.9.2 and rspec2.5.1
I want to use “expect{}.to change().from().to()” like this
When Int class, it passed.
When Ary class, it failed.
Why was Ary test failed and How do I pass this test?
regards.
On Mar 15, 2011, at 10:57 AM, niku -E:) wrote:
Why was Ary test failed and How do I pass this test?
subject.ary returns the same object both times, whereas subject.count
returns different objects each time. Make sense?
On Tue, Mar 15, 2011 at 8:57 AM, niku -E:) [email protected] wrote:
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]”
On Tue, Mar 15, 2011 at 10:08 AM, Justin Ko [email protected] wrote:
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?
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
Sorry. Test comment is incorrect.
This is intentional test.
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([0]).to([0,1])
subject.ary.should == [0]
subject.increment
subject.ary.should == [0,1]
end
end
finally, I solved this code.
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([0]).to([0,1]) # fail
expect { subject.increment }.to change{ subject.ary.clone
}.from([0]).to([0,1])
end
it “should increment the ary by [1]” do
expect { subject.increment }.to change{ subject.ary.clone }.by([1])
end
end
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs