0

私は、きゅうりをシミュレートしたブラウザー部分である RSpec Book をやろうとしています。問題は、オブジェクトに対して未定義のメソッドをスローし続けることです。つまり、アプリケーションをテストできません。

テスト

    When /^I create a movie Caddyshack in the Comedy genre$/ do
      visit movies_path
      click_link "Add Movie"
      click_button "Save"
    end

問題は、ビューでフォームをレンダリングせず、ActiveRecord オブジェクトに対して未定義のエラーをスローすることです。

景色

    <%= form_for(@movie) do |f| %>
      <table>
        <tr>
          <th><%= f.label :name %></th>
          <td><%= f.text_field :name, :id => "title" %></td>
        </tr>
      </table>

      <div class="actions">
        <%= f.submit %>
      </div>
    <% end %>

コントローラー

    def index
      @movies = Movie.all

      respond_to do |format|
        format.html # index.html.erb
        format.json { render json: @movies }
      end
    end

    def new
      @movie = Movie.new

      respond_to do |format|
        format.html # new.html.erb
        format.json { render json: @movie }
      end
    end

モデル

    class Movie < ActiveRecord::Base
      attr_accessible :showtime_date, :showtime_time, :name
      has_many :genres

      def showtime
        "#{formatted_date} (#{formatted_time})"
      end

      def formatted_date
        showtime_date.strftime("%B %d, %Y")
      end

      def formatted_time
        format_string = showtime_time.min.zero? ? "%l%p" : "%l:%M%p"
        showtime_time.strftime(format_string).strip.downcase
      end
    end

私のGemfile

    source 'https://rubygems.org'

    gem 'rails', '3.2.8'

    gem 'sqlite3'
    gem 'awesome_print'

    group :assets do
      gem 'sass-rails',   '~> 3.2.3'
      gem 'coffee-rails', '~> 3.2.1'
      gem 'uglifier', '>= 1.0.3'
    end

    gem 'jquery-rails'

    group :development, :test do
      gem "rspec-rails", ">= 2.0.0"
    end

    group :test do
      gem 'database_cleaner'
      gem "cucumber-rails", ">= 0.3.2"
    end

最後に、カピバラが言い続けるエラー

    When I create a movie Caddyshack in the Comedy genre # features/step_definitions/genre_steps.rb:6
      undefined method `name' for #<Movie:0x00000102e36590> (ActionView::Template::Error)
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/activemodel-3.2.8/lib/active_model/attribute_methods.rb:407:in `method_missing'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.8/lib/active_record/attribute_methods.rb:149:in `method_missing'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_view/helpers/form_helper.rb:1161:in `value_before_type_cast'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_view/helpers/form_helper.rb:1149:in `value_before_type_cast'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_view/helpers/form_helper.rb:1043:in `block in to_input_field_tag'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_view/helpers/form_helper.rb:1043:in `fetch'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_view/helpers/form_helper.rb:1043:in `to_input_field_tag'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_view/helpers/form_helper.rb:692:in `text_field'
      /Users/Dono/.rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.8/lib/action_view/helpers/form_helper.rb:1284:in `text_field'
      ./app/views/movies/_form.html.erb:5:in `block in _app_views_movies__form_html_erb___3270649907202408240_2157451180'

私の機能/サポート/env.rb

    require 'cucumber/rails'
    require 'rspec'

    Capybara.default_selector = :css

    ActionController::Base.allow_rescue = false

    begin
      DatabaseCleaner.strategy = :transaction
    rescue NameError
      raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
    end
    Cucumber::Rails::Database.javascript_strategy = :truncation

それでも name メソッドは定義されており、ページはブラウザで正常にレンダリングされます。何がうまくいかないのかについて何か考えはありますか?

4

1 に答える 1

1

コメントでRobertHが述べたように、私はテストデータベースを設定していませんでした。私がする必要があったのは、実行することだけでした

    rake db:test:prepare
于 2013-02-01T13:13:07.350 に答える