Strange Expectations answer

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

  1. 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.

Michel D. wrote:

expect(0) { count.size }
end
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 B. (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.

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.