Вам необходимо аннотировать поля POJO с помощью @Key
:
import com.google.api.client.util.Key;
// ...
@Key private String to;
@Key private Object data;
@Key private List<String> registration_ids;
// ...
db: Задача seed
rake в основном просто загружает скрипт db / seed.rb
. Поэтому просто запустите этот файл для загрузки данных.
load "#{Rails.root}/db/seeds.rb"
# or
Rails.application.load_seed
Где разместить, это зависит от того, какую среду тестирования вы используете, и хотите ли вы, чтобы он загружался перед каждым тестом или только один раз в начале. Вы можете поместить его в вызов setup
или в файл test_helper.rb
.
load "#{Rails.root}/db/seeds.rb"
# or
Rails.application.load_seed
Где разместить, это зависит от того, какую среду тестирования вы используете, и хотите ли вы, чтобы она загружалась перед каждым тестом или только один раз в начале. Вы можете поместить его в вызов setup
или в файл test_helper.rb
.
load "#{Rails.root}/db/seeds.rb"
# or
Rails.application.load_seed
Где разместить, это зависит от того, какую среду тестирования вы используете, и хотите ли вы, чтобы она загружалась перед каждым тестом или только один раз в начале. Вы можете поместить его в вызов setup
или в файл test_helper.rb
.
Я бы сказал, что это должно быть
namespace :db do
namespace :test do
task :prepare => :environment do
Rake::Task["db:seed"].invoke
end
end
end
Поскольку db: test: load не выполняется, если у вас есть config.active_record.schema_format =: sql (db: test: clone_structure is)
Я считаю, комментарий Стива выше должен быть правильным ответом. Вы можете использовать Rails.application.load_seed
для загрузки начальных данных в вашу тестовую среду. Однако когда и как часто эти данные загружаются, зависит от нескольких вещей:
Нет удобного способа запустить этот файл один раз перед всеми тестами (см. этот Github выпуск ). Вам нужно будет загрузить данные один раз перед каждым тестом, вероятно, в методе настройки ваших тестовых файлов:
# test/models/my_model_test.rb
class LevelTest < ActiveSupport::TestCase
def setup
Rails.application.load_seed
end
# tests here...
end
Используйте метод RSpec before(:all)
для загрузки начальных данных для всех тестов для этой модели:
describe MyModel do
before(:all) do
Rails.application.load_seed
end
describe "my model..." do
# your tests here
end
Надеюсь, это поможет.
Для тех, кто использует банк семян, он меняет способ загрузки семян, поэтому вы, вероятно, не можете / не хотите использовать решение load ...
, представленное здесь.
И просто помещение Rake::Task['db:seed'].invoke
в test_helper привело к:
Don't know how to build task 'db:seed' (RuntimeError)
Но когда мы добавили load_tasks до этого, это сработало:
MyApp::Application.load_tasks
Rake::Task['db:seed'].invoke
Мы вызываем db: seed как часть db: test: prepare с помощью:
Rake :: Task ["db: seed"]. Invoke
Таким образом , начальные данные загружаются один раз за весь тестовый прогон, а не один раз за тестовый класс.
Putting something like this in lib/tasks/test_seed.rake should invoke the seed task after db:test:load:
namespace :db do
namespace :test do
task :load => :environment do
Rake::Task["db:seed"].invoke
end
end
end