1

开始使用 Hanami。(我使用不同的实体名称,我从评论开始,而不是书籍,否则我按照链接页面上的说明进行操作。)

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
4

1 回答 1

1

在运行它们之前, 您需要为测试环境创建数据库:

HANAMI_ENV=test bundle exec hanami db prepare
于 2018-05-02T11:14:07.500 回答