0

我正在尝试做一些测试,当我尝试访问路径然后测试是否有一些内容时显然存在问题。我的视图 Prizes/index.html.erb 实际上包含以下内容:

大奖

所以它应该有效。

Prizes_controller_spec.rb

require 'spec_helper'
require 'pp'

describe PrizesController do
  subject {page}
  describe "Index" do
    describe "Test" do
      before do
        visit prizes_path
      end

      it { should have_selector('h2', text: 'Grand Prizes') }
    end   
  end
end

奖品/index.html.erb

    <h2>Grand Prizes</h2>
    <%= form_for :prize, :url => update_all_path, :html => { :method => :put }     do %>
    <table>
        <tr>
            <th>Item name</th>
            <th>Price ($)</th>
            <th>Pairs</th>
        </tr>

        <% @prizes_non_consolation.each do |prize| %>
        <%= fields_for "prize[]", prize do |prize_fields| %>
        <tr>
            <td><%= prize_fields.text_field :name %></td>
            <td><%= prize_fields.number_field :price %></td>
            <td><%= prize_fields.number_field :slot %></td>

            <td><%= link_to "Delete", prize, method: :delete,
            data: { confirm: "You sure?" } %></td>
        </tr>
        <% end %>
        <% end %>

    </table>

    <h2>Consolations Prizes</h2>
    <table>
        <tr>
            <th>Item name</th>
        </tr>
        <% @prizes_consolation.each do |prize| %>
        <%= fields_for "prize[]", prize do |prize_fields| %>
        <tr>
            <td><%= prize_fields.text_field :name %></td>

            <td><%= link_to "Delete", prize, method: :delete,
            data: { confirm: "You sure?" } %></td>
        </tr>
        <% end %>

        <% end %>
    </table>

    <div class="actions">
        <%= submit_tag "Save", class: "admin_save_button" %>
    </div>
    <% end %>
    <%= link_to "Add a new prize", new_prize_path %>

Prizes_controller.rb

class PrizesController < ApplicationController
  def index
    @prizes_consolation = Prize.consolation
    @prizes_non_consolation = Prize.non_consolation
  end

失败消息:

1) PrizesController Index Test should have css "h2" with text "Grand Prizes"
   Failure/Error: it { should have_selector('h2',    text: 'Grand Prizes') }
   Capybara::ExpectationNotMet:
     expected to find css "h2" with text "Grand Prizes" but there were no matches
   # ./spec/controllers/prizes_controller_spec.rb:11:in `block (4 levels) in <top (required)>'

宝石文件

source 'https://rubygems.org'

gem 'rails', '3.2.13'

gem 'pg'

gem 'thin'
gem 'coveralls', require: false

group :development, :test do

  gem 'rspec-rails', '~> 2.14.0'
  gem 'spork'
  gem 'capybara'

  gem 'simplecov'

  gem 'rb-fsevent'
  gem 'guard-bundler'
  gem 'guard-rspec'
  gem 'guard-spork'

  gem "factory_girl_rails", "~> 4.0"

end

group :darwin do
  gem 'rb-fsevent', :require => false
end

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

gem 'jquery-rails'
4

1 回答 1

0

您应该使用render_views以便您可以访问它们。此外,检查该页面是您要访问的元素,或直接使用响应

于 2013-08-01T07:32:27.193 回答