rails - 如何从测试中获取夹具数据

Dan*_*iel 2 unit-testing ruby-on-rails

我已经查看了测试rails指南,但我似乎可以从我的测试中获取夹具数据.我有一个夹具:

one:
  pay_period: one
  employee: kent
  cpp: 50
  ei: 40
  tax: 100
  vacation_pay: 30
Run Code Online (Sandbox Code Playgroud)

然后我按照下面的测试(其中EmployeePayPeriod是一个模型)

require 'test_helper'
class EmployeePayPeriodTest < ActiveSupport::TestCase

  # Replace this with your real tests.
  test "Calculate wages under 80 hours correctly" do
    p = EmployeePayPeriod(:one)
    assert true
  end
end
Run Code Online (Sandbox Code Playgroud)

显然以上是行不通的.我看过指南.在指南中,它使用代码片段来说明如何获取夹具数据:

@user = users(:david).  
Run Code Online (Sandbox Code Playgroud)

似乎'用户'不是一个模型(因为通常的惯例是它会单数和大写.所以'用户'来自哪里?如果它自动生成应该有可比的'employee_pay_periods'对象可供我使用?(我试过了,但它似乎没有用).

谢谢

小智 6

fixture必须位于.yml文件中,其名称与表名(而不是模型名称)匹配.

假设表名为EmployeePayPeriodis employee_pay_periods,那么你的灯具需要进入test/fixtures/employee_pay_periods.yml,你应该有一个employee_pay_periods()自动生成的方法来访问灯具.

确保您的灯具实际上正在装载.最新的Rails会将以下行添加到test/test_helper.rb:

fixtures :all
Run Code Online (Sandbox Code Playgroud)

这会在每个测试用例之前加载所有灯具.确保此行已存在且未注释掉.