【发布时间】:2014-03-09 09:54:22
【问题描述】:
我要离开 RSpec 并开始使用 Test::Unit 和 Fixtures。 请问,我的关系怎么了?
我有关系
def class InputSet < ActiveRecord::Base
has_many :input_units
end
input_set_test.rb
require 'test_helper'
class InputSetTest < ActiveSupport::TestCase
test 'fixture is valid' do
input_set = input_sets(:one)
assert input_set.valid?
end
end
夹具:
# input_sets.yml
one:
name: 'Kalkulacia 1'
input_units: product_1 <<<------- this is causing the problem
# input_units.yml
product_1:
data: {val1: 'test', val2: 'test'}
kind: 'product'
我运行rake test 并看到错误:
1) Error:
InputSetTest#test_fixture_is_valid:
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column "input_units" of relation "input_sets" does not exist
LINE 1: INSERT INTO "input_sets" ("name", "input_units", "created_at...
^
: INSERT INTO "input_sets" ("name", "input_units", "created_at", "updated_at", "id") VALUES ('Kalkulacia 1', 'product_1', '2014-03-09 09:43:40', '2014-03-09 09:43:40', 980190962)
【问题讨论】:
-
试试
input_units: [product_1] -
为什么不使用工厂而不是固定装置?
-
@astropanic 我想使用内置功能。这就是 Test::Unit 和 Fixtures 的原因。顺便说一句,我知道 Factory Girl,它更复杂,但我想要更简单的工具。
-
我明白,我也不喜欢安装大量的 gem,但简单并不总是一个好方法。也许现在由于反序列化 YAML 文件等,夹具更简单......但是当您的项目增长时,随着测试的发展,您的夹具变得无法维护,您最终会出现代码重复,这很容易出错并带来巨大的技术债务.而且因为例如 FactoryGirl 不是内置的,这并不意味着它是一个糟糕的工具。
标签: ruby-on-rails ruby unit-testing fixtures