strange Expectations answer

M

Michel Demazure

I am using Expectations and I found something which looks strange, when
you call methods. For instance:

1. No problem with:

require 'expectations'

count = []

Expectations do
expect(0) { count.size }
end

2. But when you add a second test, the *first one* fails :

require 'expectations'

count = []

Expectations do
expect(0) { count.size }
end

count << "a"

Expectations do
expect(1) { count.size }
end

The first call to 'count.size' now returns 1.

I'd like, first to understand, and second to know to use Expectations
when you follow a story like the one above. Thks.
 
O

Ola Bini

Michel said:
I am using Expectations and I found something which looks strange, when
you call methods. For instance:

1. No problem with:

require 'expectations'

count = []

Expectations do
expect(0) { count.size }
end

2. But when you add a second test, the *first one* fails :

require 'expectations'

count = []

Expectations do
expect(0) { count.size }
end

count << "a"

Expectations do
expect(1) { count.size }
end

The first call to 'count.size' now returns 1.

I'd like, first to understand, and second to know to use Expectations
when you follow a story like the one above. Thks.
To put it bluntly - you shouldn't do it that way.
Expectations collects all expectations in a file and then runs them.
Basing your tests on outside variables is not a good idea. Restructure
your tests to look like this:

Expectations do
expect(0) do
count = []
count.size
end

expect(1) do
count = []
count << "a"
count.size
end
end


Cheers

--
Ola Bini (http://ola-bini.blogspot.com)
JRuby Core Developer
Developer, ThoughtWorks Studios (http://studios.thoughtworks.com)
Practical JRuby on Rails (http://apress.com/book/view/9781590598818)

"Yields falsehood when quined" yields falsehood when quined.
 
M

Michel Demazure

Expectations collects all expectations in a file and then runs them.
Basing your tests on outside variables is not a good idea. Restructure
your tests to look like this:

Expectations do
expect(0) do
count = []
count.size
end

expect(1) do
count = []
count << "a"
count.size
end
end

Thanks Ola.

Which means that one should not use Expectations when following a story.
At step n, one would have to write again all preceeding steps. And have
them rerun, with quadratic growth... Back to spec.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,007
Latest member
obedient dusk

Latest Threads

Top