Yesterday, I was very happy because all my controller tests (using test/spec, of course) were passing individually.
Today I decided to run rake test:functionals
just to make sure they played well together. CRASH! BOOM! OTHER LOUD NOISES!
The problem, after two hours of debugging, is that I was creating the same context in different controllers. DocumentationControllerTest had a "A guest" context, and so did "AccountControllerTest" and "WelcomeControllerTest"
Test/spec is perfectly happy to merge these . . . I just didn't realize it merged them. I assumed that it would scope the context to its parent TestClass. No such luck.
The solution is quite easy, and really not all that bad practice anyway: scope your contexts manually. For example:
class WelcomeControllerTest < Test::Unit::TestCase
context "The Welcome Controller" do
context "A guest" do
...
end
context "A logged-in user" do
...
end
end
end
No comments:
Post a Comment