¿Cómo cargué los accesorios en una tabla de modelos de nombres?
-
21-12-2019 - |
Pregunta
Mi modelo es CWB::Account
(están espacilizando porque heredé este proyecto y utilizaron algunas palabras reservadas como nombres de modelos)
Estoy usando la gema de MinItest-Spec-Rails para las pruebas y estoy obteniendo este error -
ActiveRecord::FxitureClassNotFound: No class attached to find.
prueba / prueba-helper.rb
...
class ActiveSupport::TestCase
fixtures :all
end
...
Pruebas / Controladores / Sessions_Controller_Test.rb
require 'test_helper'
class SessionsControllerTest < ActionDispatch::IntegrationTest
before do
account_one = Accounts(:account_one)
register(account_one)
end
...
Prueba / Accesorios / CUENTAS.YML
account_one:
id: 1
name: testnameone
email: one@gmail.com
password_hash: passwordone
...
Si hago esto en test_helper.rb
set_fixture_class :accounts => 'CWB::Account'
fixtures :all
Obtengo error - StandardError no fixture named <CWB::Account:0x0000004bdf32> found for fixture set 'accounts'
editar
Actualización interesante, si pongo cuenta.yml en accesorios / CWB / CUENTAs.Yml i Obtenga un montón de errores sobre las dependencias circulares
Pero si lo pongo en el accesorio / CWB / CUENTES.YML (Aviso en mayúsculas) Recibo un error que dice
undefined method accounts for ...
Solución
1) Ponga su accesorio en /test/fixtures/cwb/accounts.yml
2) Llame a CWB_ACCOUNTS (: CUENTA_ONE) para obtener el registro
require 'test_helper'
class SessionsControllerTest < ActionDispatch::IntegrationTest
before do
account_one = cwb_accounts(:account_one)
register(account_one)
end
...
Otros consejos
Tuve el mismo error y he combinado todo lo que hice para resolverlo en esta respuesta.
de Respuesta de Brett Allreds , pero cargando solo el accesorio con nombre específico: (Después de poner el accesorio en /test/fixtures/cwb/accounts.yml)
require 'test_helper'
class SessionsControllerTest < ActionDispatch::IntegrationTest
fixtures: 'cwb/accounts'
before do
account_one = cwb_accounts(:account_one)
...
de Respuesta infundida , pero asumiendo nombres de tablas espaciadas (como en un motor completo):
set_fixture_class 'cwb/accounts' => CWB::Account
En realidad, estoy usando los nombres de la tabla RSPEC y Namespaced.Creo que la única diferencia para la OP sería
set_fixture_class 'accounts' => CWB::Account
Como su mesa no está empacada (solo el modelo)
The class should be the actual class, not a string:
set_fixture_class :accounts => CWB::Account