tutorial rails factorybot example bot association ruby-on-rails ruby-on-rails-3 rspec attributes factory-bot

ruby-on-rails - rails - factorybot association



Significado de attributes_for en FactoryGirl y Rspec Testing (1)

attributes_for devolverá un hash, mientras que build devolverá un objeto no persistente.

Dada la siguiente fábrica:

FactoryGirl.define do factory :user do name ''John Doe'' end end

Aquí está el resultado de la build :

FactoryGirl.build :user => #<User id: nil, name: "John Doe", created_at: nil, updated_at: nil>

y el resultado de attributes_for

FactoryGirl.attributes_for :user => {:name=>"John Doe"}

Los attributes_for me parecen muy útiles para mi prueba funcional, ya que puedo hacer cosas como las siguientes para crear un usuario:

post :create, user: FactoryGirl.attributes_for(:user)

Al usar build , tendríamos que crear manualmente un hash de atributos de la instancia del user y pasarlo al método de post , como por ejemplo:

u = FactoryGirl.build :user post :create, user: u.attributes # This is actually different as it includes all the attributes, in that case updated_at & created_at

Usualmente uso build & create cuando quiero objetos directamente y no un hash de atributos

Déjeme saber si usted necesita más detalles

Al ver un tutorial sobre la prueba del controlador, el autor da un ejemplo de una prueba rspec que prueba una acción del controlador. Mi pregunta es, ¿por qué usaron el método attributes_for over build ? No hay una explicación clara de por qué se utiliza attributes_for además de que devuelve un hash de valores.

it "redirects to the home page upon save" do post :create, contact: Factory.attributes_for(:contact) response.should redirect_to root_url end

El enlace del tutorial se encuentra aquí: http://everydayrails.com/2012/04/07/testing-series-rspec-controllers.html El ejemplo se encuentra en la sección de temas de inicio Controller testing basics