如何使用 minitest 在我的 fixtures 文件中计算项目的 ID?

How do I figure the ID of an item in my fixtures file using minitest?

我正在使用 Rails 5 和 minitest。在我的测试文件中,我怎么知道我的灯具文件中的其中一项的 ID 是什么?我有以下架构

  create_table "lines", force: :cascade do |t|
    t.string  "route_long_name"
    t.string  "name"
    t.integer "system_type"
    t.string  "color"
    t.string  "onestop_id"
    t.string  "vehicle_type"
    t.string  "wheelchair_accessible"
    t.string  "bikes_allowed"
    t.index ["onestop_id"], name: "index_lines_on_onestop_id"
    t.index ["route_long_name"], name: "index_lines_on_route_long_name"
  end

然后在我的 test/fixtures/lines.yml 中,我创建了这个 fixture

one:
  id: "1"
  name: "line1"
  color: "green"

So in my minitest test, I try this

  test "get show page with valid line id" do
    test_line_id = "1"
    line = Line.find_by_id(test_line_id)
    puts "inspect1: #{line.inspect}"
    assert_not_nil line

    get line_url(line)
    line = assigns(:line)
    puts "inspect2 #{line.inspect}"
    assert_equal test_line_id, line.id
    assert_response :success
  end

但是线

 assert_equal test_line_id, line.id

死于错误

Expected: "1"
  Actual: "980190962"

那么如何找出我的灯具文件中项目的 ID?

你不需要那样做。

如果您只想确保获得有效行的 URL...那么您可以得到任何行。您不需要通过 id 获取它,例如:

 test "get show page with valid line id" do
    # Get any line - it doesn't matter which
    line = Line.first
    assert_not_nil line

    get line_url(line)
    line = assigns(:line)
    assert_equal test_line_id, line.id
    assert_response :success
  end