Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Aplikasi saya mengakses database jarak jauh. Bagaimana cara menjalankan pengujian unit secara efisien?

TL;DR:Gunakan nulldb dan kelas induk yang peka terhadap pengujian

Gunakan nulldb saat Anda menguji dan db asli sebaliknya. Begini caranya:

Pertama, sertakan ini di Gemfile Anda:

group :development, :test do
  gem 'activerecord-nulldb-adapter', :git => 'git://github.com/nulldb/nulldb.git'
end

dan kemudian lakukan bundle install seperti biasa

Tentukan kelas dasar untuk semua model yang didukung dalam database eksternal:

class ExternalModel < ActiveRecord::Base
  if Rails.app.test?
    establish_connection(:adapter => :nulldb)
  else
    establish_connection(:myapp)
  end

  def readonly?; true; end
end

Kemudian semua model eksternal mewarisi dari ExternalModel (saya seharusnya melakukan ini dari awal):

class ExternalUser < ExternalModel
  ...
end

Saat dijalankan di lingkungan pengujian, itu tidak akan mencoba menyambung ke tabel eksternal. Tentu saja, upaya untuk mengakses instance ExternalUser akan gagal, tetapi Anda dapat secara selektif membuat koneksi dengan database eksternal selama pengujian integrasi, atau referensi stub atau tiruan ke model eksternal sebaliknya.

Yang terpenting, semua pengujian saya berjalan sangat cepat sekarang.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemotongan data:Data terlalu panjang untuk 'logo' kolom di baris 1

  2. Salin tabel dengan data dari satu server MySQL ke yang lain

  3. Hitung jumlah kunjungan berturut-turut

  4. MySql pilih nilai baris dinamis sebagai nama kolom

  5. Entri SQL yang kedaluwarsa setelah 24 jam