require_relative File.expand_path '../../test_helper',__FILE__
FactoryGirl.define do
factory :task do
name "testinga again"
finished 0
end
end
class TaskTest < Test::Unit::TestCase
include FactoryGirl::Syntax::Methods
test "should not save tasks without title" do
task = Task.new
assert_equal false, task.save
end
test "should save tasks" do
task = FactoryGirl.create(:task)
assert_equal attributes_for(:task), task
end
end
我想对任务创建过程进行单元测试。在should save task
任务中,我已将值保存到数据库中,现在我想测试保存的值是否等于我实际发送到数据库的值。怎么做呢或我甚至做得对吗?
答案 0 :(得分:2)
首先,您正在尝试检查已经过行业领先工程师测试的内容。如果您看到ActiveRecord
项目,则每个API都经过严格测试。所以我建议你跳过这个。
但是,如果你的目的是学习UnitTesting,那么你又做错了。单元测试是一种黑盒测试。在您的情况下,您不应该调用/调用任何其他类或第三方软件/服务,例如Database
。
让我们称之为集成测试。
我想测试保存的值是否等于我真正发送的值 db
很容易;见:
test "should save tasks" do
task = FactoryGirl.build(:task, name: 'John')
task.save
assert_equal 'John', task.reload.name
end
reload
从数据库中提取记录。