seit gestern versuche ich mit RoR. Dazu habe ich mir das Buch "Professionelle Webentwicklung mit Ruby on Rails" bon Jens-Christian Fischer besorgt. Dort wird im Kapitel Test ein einfacher Test für einen Controller pages, Methode show geschrieben, der mit id=1 testet. Die Dateien sehen folgendermaßen aus:
pages_controller.rb:
- Code: Alles auswählen
class PagesController < ApplicationController
def index
@pages = Page.find :all
end
def show
@page = Page.find(params[:id])
end
end
show.erb.html:
- Code: Alles auswählen
<h1><%= h @page.title %></h1>
<p>Kategorie: <%= h @page.category %></p>
<p><%= h @page.body %></p>
und die pages_controller_test.rb:
- Code: Alles auswählen
require 'test_helper'
class PagesControllerTest < ActionController::TestCase
# Replace this with your real tests.
def test_truth
assert true
end
def test_index
get :index
assert_response :success
end
def test_show_with_valid_id
get :show, :id => 1
assert_response :success
end
def test_show_with_invalid_id
get :show, :id => 99
assert_response :missing
end
end
In der Datenbank existieren drei Einträge mit den id's 1,2,3. Über den Browser werden die Einträge fehlerfrei angezeigt. Der Test ergibt allerdings:
somehow@melone-ubuntu804:~/rails/work/referenz$ rake
(in /home/somehow/rails/work/referenz)
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/unit/page_test.rb"
Loaded suite /usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader
Started
.
Finished in 0.352892 seconds.
1 tests, 1 assertions, 0 failures, 0 errors
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/functional/pages_controller_test.rb"
Loaded suite /usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader
Started
..F.
Finished in 0.475632 seconds.
1) Failure:
test_show_with_valid_id(PagesControllerTest)
[./test/functional/pages_controller_test.rb:16:in `test_show_with_valid_id'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/testing/setup_and_teardown.rb:33:in `__send__'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/testing/setup_and_teardown.rb:33:in `run']:
Expected response to be a <:success>, but was <404>
4 tests, 4 assertions, 1 failures, 0 errors
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb"
Errors running test:functionals!
Ich kann irgendwie keinen Fehler erkennen. Die Methoden sind 1 zu 1 aus dem Buch übernommen. Wer kann mir sagen, was da falsch läuft ? Das Ergebnis dürfte ja sein, dass er die id=1 findet, und kein 404 Error kommt. Bin über jeden Rat dankbar.
Grüße
dresinio

