0

Michael の RoR チュートリアルに従ってガードを設定し、(連絡先ページのタイトルで) 意図的にテストを作成したため、失敗しました。しかし、Guard/RSpec は合格したと言っており、何が起こっているのか混乱しています。これは私のstatic_pages_spec.rbファイルです:

require 'spec_helper'

describe "Static pages" do

  describe "Home page" do

    it "should have the content 'Welcome to the PWr App'" do
      visit '/static_pages/home'
      expect(page).to have_content('Welcome to the PWr App')
    end

    it "should have the title 'Home'" do
      visit '/static_pages/home'
      expect(page).to have_title("PWr | Home")
    end
  end

  describe "Help page" do

    it "should have the content 'Help'" do
      visit '/static_pages/help'
      expect(page).to have_content('Help')
    end

    it "should have title 'Help'" do
      visit '/static_pages/help'
      expect(page).to have_title("PWr | Help")
    end
  end

  describe "About page" do
    it "should have the content 'About me'" do
      visit '/static_pages/about'
      expect(page).to have_content('About Me')
    end

    it "should have title 'About Me'" do
      visit '/static_pages/about'
      expect(page).to have_title("PWr | About")
    end
  end

  describe "Contact page" do
    it "should have the content 'Contact'" do
      visit '/static_pages/contact'
      expect(page).to have_content('Contact')
    end

    it "should have title 'Contact'" do
      visit '/static_pages/contact' do
        expect(page).to have_title("FAIL")
      end
    end
  end
end

そして、これは私のものcontact.html.erbです:

<% provide(:title, 'Contact') %>
<h1>Contact</h1>
<p1>
        If you need to contact me just call the number below: </br>
        +48 737823884
</p>

そして私の端末からの結果:

18:43:57 - INFO - Running: spec/requests/static_pages_spec.rb
........

Finished in 0.08689 seconds
8 examples, 0 failures


Randomized with seed 55897

[1] guard(main)> 

ご覧のとおり、仕様ファイルの最後に近い部分とexpect(page).to have_title("FAIL")、連絡先ページの html/erb に明確に含まれています<% provide(:title, 'Contact') %>が、テストはパスしています。どうしてこれなの?私は何を間違っていますか?

4

1 に答える 1

3

問題は、期待値をブロックとして visit メソッドに渡していることです。つまり、extra に注意してくださいdo-end。ブロックを使用しているとは思わないvisitので、基本的にそのコードは無視されます。

it "should have title 'Contact'" do
  visit '/static_pages/contact' do
    expect(page).to have_title("FAIL")
  end
end

ブロックを削除すると、仕様は期待どおりに動作するはずです。

it "should have title 'Contact'" do
  visit '/static_pages/contact'
  expect(page).to have_title("FAIL")
end
于 2013-11-06T18:42:25.940 に答える