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 ...

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top