我使用的是带有sqlite的Rails 4.2.3。我有一个简单的'assert true‘单元测试,使用内置的ActiveSupport::TestCase。
在db/migrate中有一个迁移。
我不确定为什么以下原因会导致测试成功运行,但我预计会出现“pending migrations”错误:
rwc $ rake db:drop:all
rwc $ rake db:migrate:status
Schema migrations table does not exist yet.
rwc $ rake db:migrate:status RAILS_ENV=test
Schema migrations table does not exist yet.
rwc $ rake test
Run options: --seed 43484
# Running:
.
Finished in 0.011646s, 85.8671 runs/s, 85.8671 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips测试没有与数据库交互,但我仍然预计会由于尚未应用的迁移而出现错误。
有人能解释这种行为吗?
发布于 2015-10-04 23:47:35
只需从字面上阅读以下内容:
为了运行您的测试,您的测试数据库需要具有当前结构。测试帮助器检查测试数据库是否有任何挂起的迁移。如果是这样,它将尝试将db/schema.rb或db/structure.sql加载到测试数据库中。如果迁移仍处于挂起状态,则会引发错误。通常,这表明您的模式未完全迁移。对开发数据库运行迁移(bin/rake :migrate)将使模式保持最新。
参考:http://guides.rubyonrails.org/testing.html#rails-sets-up-for-testing-from-the-word-go
https://stackoverflow.com/questions/32935260
复制相似问题