【发布时间】:2012-07-10 03:39:17
【问题描述】:
我有一个表 (Dishes),其中有一列 (nutrition_facts) 用于存储键/值数据(类似于 hstore in a PostgreSQL 数据库)。
我在我的fixtures文件夹中定义了一个新的Dish实例:
nutrition_facts:
id: 6
name: Dish 6
category: Cat 1
description: Something about Dish 6
price: 15.32
menu_id: 1
nutrition_facts:
serving_size:
calories: 392
但是当我运行rake test:units 时,我似乎无法使以下断言起作用——它在第一个assert_not_nil 上失败了
test "no serving size with calories" do
dish = dishes(:nutrition_facts)
assert_not_nil(dish.calories)
assert_nil(dish.serving_size)
assert !dish.save, "Saved dish when serving size wasn't defined while calories was"
end
如何在不测试整个 nutrition_facts 字段的情况下测试单个 calories 和 serving_size 值?
简而言之,我正在尝试测试以下验证(来自我的 dish.rb 文件),当我在浏览器中运行应用程序时该验证有效:
# Check 'serving size' isn't blank only if 'calories' is defined
validates_presence_of :serving_size, :if => Proc.new { |val| !val.calories.blank? }
【问题讨论】:
-
你是如何在你的模型中定义这个“键/值”的东西的?通过序列化?!
-
是的,通过序列化。一旦我找到了这个关键字,我就可以在这个网站Fixtures and serialized attributes in Ruby on Rails 上找到解决方案。我将在几个小时内将解决方案作为正式答案发布。感谢您有兴趣帮助我。
标签: ruby-on-rails-3 unit-testing rake key-value