O pano de fundo: estou tendo alguns problemas com a gema "Factory Girl" do Thoughtbot, que é usada para criar objetos para uso em testes unitários e outros. Eu gostaria de ir ao console e executar diferentes chamadas da Factory Girl para verificar o que está acontecendo. Por exemplo, eu gostaria de ir lá há fazer ...
>> Factory(:user).inspect
Eu sei que você pode executar o console em diferentes ambientes ...
$ script / console RAILS_ENV = teste
Mas quando faço isso, a classe Factory não está disponível. Parece que test_helper.rb
não está sendo carregado.
Eu tentei várias require
chamadas, incluindo uma com o caminho absoluto, test_helper.rb
mas elas falham da mesma forma:
$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
Errno::ENOENT: No such file or directory -
/Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb
Grr. Argh.
ruby-on-rails
ruby
testing
shoulda
Ethan
fonte
fonte
Respostas:
Para Rails <3.0
Corra
script/console --help
. Você notará que a sintaxe é ascript/console [environment]
que, no seu caso, éscript/console test
.Não tenho certeza se você precisa do auxiliar de teste ou se o ambiente de teste faz isso por você, mas com esse comando, você deve pelo menos conseguir inicializar com êxito no ambiente de teste.
Como nota de rodapé: É realmente meio estranho que os vários binários no script / tenham maneiras diferentes de definir o ambiente de rails.
Para os trilhos 3 e 4
Corra
rails c test
. Anexe antesbundle exec
se precisar para o ambiente atual do aplicativo.Para os trilhos 5 e 6
Corra
rails console -e test
.fonte
rails console [environment]
rails server -e test
features/support/helpers.rb
não foi carregado automaticamente. Além disso,Rack::Test
não está carregado.No Rails 3, basta fazer
rails console test
ourails console production
ourails console development
(que é o padrão).fonte
Deve ser tudo que você precisa.
fonte
Para o Rails 5.2.0: "Passar o nome do ambiente como argumento regular foi descontinuado e será removido na próxima versão do Rails. Por favor, use a opção -e."
fonte
Você pode especificar o ambiente em que o comando do console deve operar.
Exemplos
1) Para estadiamento
2) Para Produção
Para fonte e descrição detalhada: The Rails Command Line
fonte
David Smith está correto, apenas faça
O comando help mostrará por que isso funciona:
É o pouco [ambiente] .
fonte
Eu compartilho a dor do autor. Há realmente três perguntas separadas aqui, algumas das quais são abordadas, outras não:
Como você inicia o console no ambiente de teste?
Para versões recentes do Rails
bundle exec rails c test
, ou sintaxes alternativas para isso.Como você garante que test / test_helper.rb seja carregado nessa sessão do console?
Algo como
require './test/test_helper'
deveria fazê-lo.Para mim, isso retorna true, indicando que ainda não estava carregado quando iniciei o console. Se essa declaração retornar falsa, você apenas desperdiçou algumas teclas, mas ainda está pronto.
Depois que o test_helper é carregado, como você chama os métodos definidos nele?
Em um test_helper típico, os métodos personalizados geralmente são definidos como métodos de instância do ActiveSupport :: TestCase. Portanto, se você quiser chamar um deles, precisará de uma instância dessa classe. Por tentativa e erro, o ActiveSupport :: TestCase.new possui um parâmetro necessário, então ... passe algo.
Se o seu test_helper tiver um método chamado create_user, você poderá invocá-lo desta maneira:
ActiveSupport::TestCase.new("no idea what this is for").create_user
fonte
:random
por padrãoinitialize
método. Mas parece que o parâmetro esperado é armazenado como@NAME
no objeto criado.Verifique se você instalou o GEM e se adicionou a seguinte linha no arquivo environment.rb ou test.rb.
fonte
Teste Env
Desenvolvimento Env
fonte
O comando para executar o ambiente de teste do console do Rails é
ou
se você estiver enfrentando problemas, algo como
então você deve primeiro preparar seu banco de dados de teste executando
fonte