現時点では、これは単純なプロジェクトです。静的なページのほんの数ページです。私はジェネリックなテストフレームワークを開発していますが、さまざまなテストオプションを区別するのには苦労しています。私はRspec、Capybara、Faker、Factory Girl、Spring、そしてshouldaを追加しました(ただし、私は現時点ではshoulda matcherを使用していません)。capybara have_title NoMethodError
私はこのコントローラのテストファイルがあります。
require 'rails_helper'
RSpec.describe StaticPagesController, type: :controller do
describe "GET #a_page" do
before(:each) { get :a_page }
it "returns http success" do
expect(response).to have_http_status(:success)
end
it "has a page title Static Site" do
expect(response).to have_title('Static Site')
end
end
end
これはガードを通るとき、それはエラー・スタックをスロー:
23:13:39 - INFO - Run all
23:13:39 - INFO - Running all specs
Running via Spring preloader in process 4498
Running via Spring preloader in process 4506
/home/steve/workspaces/static_site/db/schema.rb doesn't exist yet. Run `rake db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /home/steve/workspaces/static_site/config/application.rb to limit the frameworks that will be loaded.
.F
Failures:
1) StaticPagesController GET #a_page has a page title Static Site
Failure/Error: expect(response).to have_title('Static Site')
NoMethodError:
undefined method `match' for nil:NilClass
Did you mean? catch
# /home/steve/.rvm/gems/ruby-2.3.1/gems/capybara-2.7.1/lib/capybara/queries/title_query.rb:18:in `resolves_for?'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/capybara-2.7.1/lib/capybara/node/document_matchers.rb:20:in `block in assert_title'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/capybara-2.7.1/lib/capybara/node/simple.rb:144:in `synchronize'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/capybara-2.7.1/lib/capybara/node/document_matchers.rb:19:in `assert_title'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/capybara-2.7.1/lib/capybara/rspec/matchers.rb:105:in `matches?'
# ./spec/controllers/static_pages_controller_spec.rb:34:in `block (3 levels) in <top (required)>'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-commands-rspec-1.0.4/lib/spring/commands/rspec.rb:18:in `call'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/command_wrapper.rb:38:in `call'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/application.rb:191:in `block in serve'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/application.rb:161:in `fork'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/application.rb:161:in `serve'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/application.rb:131:in `block in run'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/application.rb:125:in `loop'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/application.rb:125:in `run'
# /home/steve/.rvm/gems/ruby-2.3.1/gems/spring-1.7.1/lib/spring/application/boot.rb:19:in `<top (required)>'
# -e:1:in `<main>'
Finished in 0.029 seconds (files took 2.54 seconds to load)
2 examples, 1 failure
Failed examples:
rspec ./spec/controllers/static_pages_controller_spec.rb:33 # StaticPagesController GET #a_page has a page title Static Site
最初のテストは、二なしで、私が得る、OK走るとをきれいな結果。私は多くの時間を私の設定を越えて過ごしました。それはOKです。私はまた、ドキュメントやいくつかのサポートサイトを見てきました。
誰でも手助けできますか?
フィードバックいただきありがとうございます。このことをたくさん読んだら、モデル、コントローラ(OQで提案したテストのタイプを除く)、およびフィーチャのテストのみを作成する傾向があると思います。ビューのテストではそれほど多くのことをもたらすようには見えないので、私はそれらを気にするつもりはないと思う。それは正しいと思いますか? –
@SteveRoachあなたがより生産的になるのに役立つテストを書いてください - 1つの利点ビューテストは機能テストよりもはるかに速い傾向がありますが、実際に確認できるのでページがJS駆動になるにつれて有用性を失い始めます静的コンテンツ私の個人的な信念は、TDDのことが多くの人々をテスト対象に押し上げていることです。 –
そのトムに感謝します。私は、主にビューに対するフィーチャテストにもっと重点を置いて、主にすべてを1つのアプローチにすると思います。私はただ一つのことにとても良くなることを願っています。多分、私はそれを少し混ぜ合わせるだろう。私はスピードの問題で今生きていきます。私はテストのバランスを正しく取ろうとしています、そして、私はそれがより多くの経験と共に来ると思います。その間、私はあらゆるプロジェクトのための良い基礎を与える標準的な(私に)テストのライブラリを置こうとしています。その後、それを上に構築します。フィードバックいただきありがとうございます - それはすべて良いです。 –