写入单元测试以将数据保存到db

时间:2017-06-27 02:16:58

标签: ruby unit-testing testunit

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任务中,我已将值保存到数据库中,现在我想测试保存的值是否等于我实际发送到数据库的值。怎么做呢或我甚至做得对吗?

1 个答案:

答案 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从数据库中提取记录。