私はRails TDDの新機能ですが、この機会に覚えておきたいと思います。しかし、私は顧客のフィードバックを受け取るMVCアプリを持っています。私がやったことは、最初に関数を開発し、後でTDDを始めたことです(私はそれが他の方法でなければならないことを知っています:P。しかし、私はTDDを初めて使ったので、 (ルート、コントローラ、モデルバリデーション)Rails RSpecとCapybaraのTDDは失敗します
しかし、私はテストに合格することができませんでした。テストコードに何が間違っているのか分かりませんか?そして、サンプルデータを一度作成してテストするTDDの初心者のために改善するために何ができるのですか?私はfactorygirlを使うことができるいくつかのブログ&の記事を読んでいますが、どうすれば "データ "と私は値または何かを格納するために余分なファイルが必要ですか?
私は間違っている場合も私を修正します。 CapybaraはUIテストに使用されますか?それはUIテストの多くを使用しています。 Seleniumのような他のツールは、Capybaraの代わりに使うことができますか?
feedback.rb
class Feedback < ActiveRecord::Base
validates_presence_of :name, :message => "Name is required before giving a feedback."
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, :message => "Invalid email address !", :allow_blank => true
validates :telephone_no, :numericality => {:allow_blank => true}
end
feedbacks_controller.rb
class FeedbacksController < ApplicationController
def create
@feedback = Feedback.create(feedback_params)
if @feedback.errors.any?
flash[:error] = @feedback.errors
render 'new'
else
redirect_to :back
end
end
def new
@feedback = Feedback.new
end
private
def feedback_params
params.require(:feedback).permit(:name, :email, :telephone_no, :comment,
:approved)
end
end
feedback_controller_spec.rb は "rails_helper"
describe 'Feedback#Create' do
context 'when param[:name] is not present' do
@feedback = Feedback.create
it 'should flash error' do
expect(flash[:error]).to match(/Name is required before giving a feedback .*/)
end
it 'should render back to new' do
is_expected.to render_template new_path
end
end
context 'when param[:name] is present' do
@feedback = Feedback.create(:name => "Hah")
@feedback.save
it 'should redirect to homepage' do
is_expected.to redirect_to new_feedback_path
end
end
context 'when param[:name] is present but with invalid param[:email]' do
it 'should flash error' do
end
end
end
が必要です