Undefined method 'sollte' bei der Verwendung von Capybara mit Gurke

Ich versuche, mit beiden Wasserschweine und Gurken in meine Rails-Anwendung. Also, das ist, was ich getan habe:

  • Installierten gems benötigt und hat Sie auf die Gemfile
  • Lief die rails generate capybara:install --cucumber
  • Erstellt ein feature und seine Schritte Definitionen für Gurken

Hier meine Funktion (ja, ich bin erstellen von blog-Anwendung):

Feature: Browse posts
    So that I can browse through the posts
    As a visitor
    I want to see all and/or particular posts

    Scenario: Viewing all the posts
        Given Posts exist
        When I navigate to the website home
        Then I should see all the posts

    Scenario: Viewing particular post
        Given Post #1 exists
        When I navigate to /posts/view/1
        Then I should see the post with id=1

Und hier ist die Schritt-Definitionen:

Given /^Posts exist$/ do
    assert (not Post.all.empty?), "No posts found at all"
end

Given /^Post #(\d+) exists$) do |id|
    assert Post.find_by_id(id).valid?, "Post ##{ id } was not found at all"
end

When /^I navigate to (.+)$/ do |url|
    if url =~ /^the website home$/ then
        visit '/'
    else
        visit url
    end
end

Then /^I should see all(.+)posts$/ do |delimiter|
    posts = Post.all

    posts.each do |post|
        page.should have_content post.title
    end
end

Then /^I should see the post with id([^\d]{1,})(\d+)$/ do |delimiter, id|
    post = Post.find_by_id id

    page.should have_content post.title
end

Und beim laufen rake cucumber bekomme ich diese Meldung:

Then I should see all the posts     # features/step_definitions/browsing_posts.rb:13
  undefined method `should' for #<Capybara::Session> (NoMethodError)
  ./features/step_definitions/browsing_posts.rb:17:in `block (2 levels) in <top (required)>'
  ./features/step_definitions/browsing_posts.rb:16:in `each'
  ./features/step_definitions/browsing_posts.rb:16:in `/^I should see all(.+)posts$/'
  features/browsing_posts.feature:9:in `Then I should see all the posts'

Was mache ich falsch? Und ja, gibt es irgendwelche Fehler in meiner Funktion?

  • Das wird nicht Ihr problem lösen, aber verbessern Sie die Qualität Ihrer Geschichten: Given nothing ist nicht korrekt. Given Posts exist ist eher, was Sie wollen.
  • Sie sind mit dem Standard-test::unit oder rspec? einige Ihrer syntax sind mehr im Stil von rspec
  • eigentlich bin ich nicht sicher =) ich tests mit rake cucumber und ich sehe nicht ein rspec oder test::unit code von mir. ich nehme an, Gurken verwendet eigene Klassen
  • In diesem Fall sind Sie standardmäßig auf test-Einheit und sollten die Erwartung syntax, die mit ihm kommt
  • was ist die Erwartungshaltung der syntax??? Ich kam nicht auf die Idee, Ihre Gedanken - Sie sprechen assert's???
InformationsquelleAutor shybovycha | 2012-08-29
Schreibe einen Kommentar