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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs