Latar belakang: Saya mengalami beberapa masalah dengan permata "Factory Girl" Thoughtbot, dengan digunakan untuk membuat objek untuk digunakan dalam unit dan tes lainnya. Saya ingin pergi ke konsol dan menjalankan panggilan Factory Girl yang berbeda untuk memeriksa apa yang terjadi. Misalnya, saya ingin masuk ke sana do ...
>> Factory(:user).inspect
Saya tahu bahwa Anda dapat menjalankan konsol di lingkungan yang berbeda ...
$ script / konsol RAILS_ENV = tes
Tapi saat saya melakukannya, kelas Pabrik tidak tersedia. Sepertinya test_helper.rb
tidak dimuat.
Saya mencoba berbagai require
panggilan termasuk satu dengan jalur absolut test_helper.rb
tetapi gagal serupa dengan ini:
$ 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
sumber
sumber
Jawaban:
Untuk Rails <3.0
Lari
script/console --help
. Anda akan melihat bahwa sintaksnya adalahscript/console [environment]
, yang dalam kasus Anda adalahscript/console test
.Saya tidak yakin apakah Anda harus meminta pembantu tes atau jika lingkungan pengujian melakukannya untuk Anda, tetapi dengan perintah itu Anda setidaknya harus bisa boot dengan sukses ke dalam tes env.
Sebagai catatan samping: Memang agak aneh bahwa berbagai binari dalam skrip / memiliki cara yang berbeda untuk mengatur lingkungan rel.
Untuk Rails 3 dan 4
Lari
rails c test
. Tambahkan di awalbundle exec
jika Anda memerlukan ini untuk lingkungan aplikasi saat ini.Untuk Rails 5 dan 6
Lari
rails console -e test
.sumber
rails console [environment]
rails server -e test
features/support/helpers.rb
tidak dimuat secara otomatis. Juga,Rack::Test
tidak dimuat.Di Rails 3, lakukan saja
rails console test
ataurails console production
ataurails console development
(yang merupakan default).sumber
Harus menjadi semua yang Anda butuhkan.
sumber
Untuk Rails 5.2.0: "Meneruskan nama lingkungan sebagai argumen biasa tidak digunakan lagi dan akan dihapus di versi Rails berikutnya. Silakan, gunakan opsi -e sebagai gantinya."
sumber
Anda dapat menentukan lingkungan tempat perintah konsol harus beroperasi.
Contoh
1) Untuk Pementasan
2) Untuk Produksi
Untuk sumber & penjelasan rinci: Baris Perintah Rails
sumber
David Smith benar, lakukan saja
Perintah bantuan akan menunjukkan mengapa ini berfungsi:
Ini adalah bagian [lingkungan] .
sumber
Saya berbagi rasa sakit yang ditanyakan. Sebenarnya ada tiga pertanyaan terpisah di sini, beberapa di antaranya dibahas, beberapa tidak:
Bagaimana Anda memulai konsol di lingkungan pengujian?
Untuk versi Rails terbaru
bundle exec rails c test
, atau sintaks alternatif untuk itu.Bagaimana Anda memastikan bahwa test / test_helper.rb dimuat ke sesi konsol itu?
Sesuatu seperti
require './test/test_helper'
harus melakukannya.Bagi saya, ini mengembalikan nilai true, menunjukkan bahwa itu belum dimuat ketika saya memulai konsol. Jika pernyataan itu kembali salah, maka Anda hanya menyia-nyiakan beberapa penekanan tombol, tetapi Anda masih baik-baik saja.
Setelah test_helper dimuat, bagaimana Anda memanggil metode yang ditentukan di dalamnya?
Dalam test_helper biasa, metode kustom biasanya didefinisikan sebagai metode instance ActiveSupport :: TestCase. Jadi jika Anda ingin memanggil salah satunya, Anda memerlukan instance dari kelas itu. Dengan trial and error, ActiveSupport :: TestCase.new memiliki satu parameter yang diperlukan, jadi ... berikan sesuatu.
Jika test_helper Anda memiliki metode yang disebut create_user, Anda dapat memanggilnya dengan cara ini:
ActiveSupport::TestCase.new("no idea what this is for").create_user
sumber
:random
defaultinitialize
metodenya. Tapi sepertinya parameter yang diharapkan disimpan seperti@NAME
pada objek yang dibuat.Pastikan Anda menginstal GEM dan Anda menambahkan baris berikut di file environment.rb atau test.rb Anda.
sumber
Uji Env
Pengembangan Env
sumber
Perintah untuk menjalankan lingkungan pengujian konsol rel adalah
atau
jika Anda menghadapi masalah seperti
maka Anda harus terlebih dahulu mempersiapkan DB pengujian Anda dengan menjalankan
sumber