Je ne suis pas nouveau sur Rails TDD mais j'aimerais profiter de cette opportunité pour apprendre. Cependant, j'ai une application MVC qui reçoit les commentaires des clients. Ce que j'ai fait a été d'abord développé la fonction et commencé TDD plus tard (ce que je sais que ce devrait être l'inverse: P. Mais parce que je suis nouveau à TDD, je pensais que je les mettrais une fois mes fonctionnalités terminées (route, contrôleur, validation du modèle)Rails TDD avec RSpec & Capybara échouent
Cependant, je ne pouvais pas passer mon test, puis-je savoir quel est le problème avec le code de test? Et comment devrais-je créer une SAMPLE data ONCE et l'utiliser pour tester pour tout le contexte dans 1 contrôleur Comment est-ce que je devrais organiser mon test Tout conseils ce qui peut être fait pour améliorer pour un débutant dans TDD? J'ai lu quelques blogs & articles par lesquels nous pouvons employer factorygirl? données "et ai-je besoin de fichier supplémentaire pour stocker les valeurs ou quelque chose?
Corrigez-moi aussi si je me trompe. Capybara est-il utilisé pour le test de l'interface utilisateur? Comme il est utilisé plus sur le test de l'interface utilisateur. D'autres outils comme le sélénium peuvent être utilisés pour remplacer Capybara non?
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 exigent "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