Рейк-тесты используют другую базу данных, чем Ханами? - PullRequest
0 голосов
/ 01 мая 2018

Я начинаю с Ханами . (Я использую другое имя сущности, я начал с обзоров, а не с книг, но в остальном я следовал инструкциям на связанной странице.)

bundle exec hanami db prepare работает нормально. База данных SQLite создана. bundle exec hanami db отлично работает

select * from reviews;

не жалуется. bundle exec hanami server работает нормально, я могу загрузить '/reviews', я могу создать новый с '/reviews/new', затем я снова вижу результат в списке. Это определенно работает с базой данных.

А потом приходит bundle exec rake test, который выдает ошибки вроде

9) Error:
Add a review#test_0001_can create a new review:
Hanami::Model::Error: SQLite3::SQLException: no such table: reviews
    /home/ytg/.rvm/gems/ruby-2.5.1/gems/hanami-model-1.2.0/lib/hanami/repository.rb:362:in `rescue in create'
    /home/ytg/.rvm/gems/ruby-2.5.1/gems/hanami-model-1.2.0/lib/hanami/repository.rb:359:in `create'
    ...

Я подозреваю, что rake работает из файла базы данных, отличного от hanami, потому что таблица действительно должна быть там. Но почему? И как я могу убедиться, что они используют одну базу данных?

РЕДАКТИРОВАТЬ: добавление Rakefile на всякий случай

require 'rake'
require 'hanami/rake_tasks'
require 'rake/testtask'
require 'rubocop/rake_task'

RuboCop::RakeTask.new

Rake::TestTask.new do |t|
  t.pattern = 'spec/**/*_spec.rb'
  t.libs << 'spec'
  t.warning = false
end

task default: :test
task spec: :test

1 Ответ

0 голосов
/ 02 мая 2018

Вам необходимо создать базу данных для тестовой среды , прежде чем запускать их:

HANAMI_ENV=test bundle exec hanami db prepare
...