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

时间:2009-08-27 04:58:58

标签: ruby-on-rails unit-testing

我看过rails guide to testing,但我似乎可以从我的测试中获取夹具数据。我有一个夹具:

one:
  pay_period: one
  employee: kent
  cpp: 50
  ei: 40
  tax: 100
  vacation_pay: 30

然后我按照下面的测试(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

显然上面的方法不起作用。我看过指南。在指南中,它使用代码片段来说明如何获取夹具数据:

@user = users(:david).  

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

由于

2 个答案:

答案 0 :(得分:6)

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

假设EmployeePayPeriod的表名为employee_pay_periods,那么您的灯具必须位于test/fixtures/employee_pay_periods.yml,并且您应该自动生成employee_pay_periods()方法以访问灯具。

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

fixtures :all

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

答案 1 :(得分:3)

我认为用户是基于yml文件名的约定。在示例中,他们有一个users.yml。因此,要更直接地回答您的问题,请尝试.yml fixture文件的名称。

从长远来看,某些事情可能更容易,例如FactoryGirlMachinistfixjour