如何测试我的模型在Rails和minitest中是否有效?

时间:2018-01-07 20:45:00

标签: unit-testing model ruby-on-rails-5 minitest

我正在使用rails 5.0.1和minitest。我想写一个简单的测试来验证我的模型。模型文件是

public

和架构是

get

所以我在test / models / issue_test.rb写了我的测试

class Issue < ApplicationRecord
  belongs_to :user
  belongs_to :stop, foreign_key: "stop_onestop_id"
  belongs_to :vehicle, required: false
  belongs_to :line, foreign_key: "line_onestop_id"
  validates :types, presence: true
end

但是当我进行测试时,它会以最壮观的方式崩溃。我无法弄清楚出了什么问题。这是输出

  create_table "issues", force: :cascade do |t|
    t.string   "stop_onestop_id"
    t.integer  "vehicle_id"
    t.text     "description"
    t.integer  "user_id"
    t.string   "line_onestop_id"
    t.string   "types"
    t.boolean  "resolved"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.index ["stop_onestop_id"], name: "index_issues_on_stop_onestop_id"
    t.index ["user_id"], name: "index_issues_on_user_id"
    t.index ["vehicle_id"], name: "index_issues_on_vehicle_id"
  end

编写单元测试的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

你的测试没有任何问题。

我怀疑你可能遇到了一个神奇的列名...当你对列使用type(或类似的名字)时,Rails真的不喜欢它 - 因为这会重载内部使用的秘密隐藏变量Rails本身......

不幸的是,这个魔术列表在任何地方都没有记录。

尝试将该列重命名为其他内容,例如“种类”,并查看是否一切都开始神奇地工作......