我看过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'对象可用于我?(我已经尝试了,但似乎没有用)。
由于
答案 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文件的名称。
从长远来看,某些事情可能更容易,例如FactoryGirl,Machinist或fixjour