tutorial sheet rails has_many factorybot cheatsheet cheat bot attributes_for association ruby-on-rails ruby factory-bot

ruby-on-rails - sheet - factory bot rails tutorial



Cómo pasar parámetros a través de la cadena de asociaciones en FactoryGirl (1)

Por defecto, FactoryGirl llama a las fábricas de asociaciones para crearlas. Puedo pasar una asociación para una fábrica como parámetro. Pero, ¿cómo puedo pasar un objeto que debería usarse en lo profundo de la cadena de asociaciones?

Por ejemplo:

Tengo una publicación, que tiene un PostsManager, que tiene una cuenta, que pertenece a current_user.

Cuando hago una Factory(:post) , crea un PostsManager, que crea una Cuenta, que no pertenece al usuario actual (stubed).

Por lo tanto, en las especificaciones que utilizan la fábrica de correos tengo que hacer:

account = Factory(:account, user: current_user) post_manager = Factory(:post_manager, account: account) post = Factory(:post, post_manager: post_manager)

Lo que me gustaría hacer es llamar a la fábrica con Factory(:post, user: current_user) , y luego pasar current_user través de las asociaciones a la fábrica de cuentas. ¿Hay una manera de hacerlo así?


No estoy seguro de qué versión de FactoryGirl está utilizando, pero si está en una versión reciente (2.6+), puede usar Atributos Transitorios (lea más en su página "Cómo empezar" ). Podrías hacer algo como esto:

FactoryGirl.define do factory :post do ignore do user nil end posts_manager { FactoryGirl.build(:posts_manager, :user => user) } end factory :posts_manager do ignore do user nil end account { FactoryGirl.build(:account, :user => user) } end factory :account do user { user } end end FactoryGirl.create(:post, :user => current_user)