【问题标题】:Minitest doesn't respect setting config.active_record.pluralize_table_names to falseMinitest 不尊重将 config.active_record.pluralize_table_names 设置为 false
【发布时间】:2015-09-25 21:32:02
【问题描述】:

我一直在尝试在 Rails 4.2.4 上设置我的第一个测试,但通常我在 DB 中使用单数表名,因此我将这一行添加到 config/application.rb

config.active_record.pluralize_table_names = false

由于我一直在研究 Car 和 User 模型,假设我已经生成了每个脚手架,并且已经执行了 rake db:test:prepare,所以问题从以下测试开始:

在 test/models/car_test.rb 或 user_test.rb 中,首先我取消注释存根测试“真相”并使用 rake test:models

运行带有以下错误的 vanilla
# Running:

EE

Finished in 0.019095s, 104.7396 runs/s, 0.0000 assertions/s.

  1) Error:
UserTest#test_the_truth:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: users: DELETE FROM "users"



  2) Error:
CarTest#test_necessary_car_data:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such table: users: DELETE FROM "users"


2 runs, 0 assertions, 0 failures, 2 errors, 0 skips

当我运行 rake test:controllers 时,同样的 ActiveRecord 错误多次出现,我目前无法以任何方式修复此行为。

其他人遇到过这个问题?快把我逼疯了……

PS:所有开发都做得很好,没有任何单一表名的问题,唯一的麻烦在于测试。

【问题讨论】:

    标签: ruby-on-rails testing activerecord minitest


    【解决方案1】:

    经过大量修改后,我发现 Minitest 使用每个夹具文件名来转换为 DB 中表的名称。所以,当我生成脚手架时,它创建了 test/fixtures/users.yml

    所以我只是将文件名更改为 user.yml,然后测试再次开始工作(我需要更改所有夹具文件名)。

    最后,它起作用了,但是当生成器应该这样做时手动更改这些名称感觉很尴尬......有人知道去哪里指出生成器的这个问题吗?在官方 repo 中注册一个 Github 问题可以吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-09
      • 2014-04-18
      • 2012-07-28
      • 2022-08-22
      • 1970-01-01
      • 2014-01-01
      • 2019-06-18
      相关资源
      最近更新 更多