背景:
明星和管理员,多对多
classAdmin<ActiveRecord::Base
has_and_belongs_to_many:stars
end
classStar<ActiveRecord::Base
......
has_and_belongs_to_many:admins

......
end
共有3个表:admins,stars,admins_stars,关联表admins_stars只有两个字段:star_id,admin_id
以一个测试用例作为说明
开头:
requireFile.dirname(__FILE__)+'/../test_helper'

classAdminTest<Test::Unit::TestCase
fixtures:admins,:agents,:stars,:admins_stars

defsetup

@admin=Admin.find(1)
end
....
测试读:
deftest_read
assert_equal1,@admin.id
assert_equal"1",@admin.nick_name

assert_equal2,@admin.stars.length

assert_equal"谭咏麟",@admin.stars[0].name_cn
end
测试新增:
deftest_create

new_admin=Admin.new
new_admin.login_name="aa"
new_admin.nick_name="bb"
new_admin.star_ids=[2,3]

new_admin.save

new_admin=Admin.find(new_admin.id)

assert_equal2,new_admin.stars.length

end
测试修改:
def test_update
assert_equal 2,@admin.stars.length
assert_equal 1,@admin.stars[0].id
assert_equal 2,@admin.stars[1].id
@admin.star_ids=[3]
@admin.nick_name="aa"
@admin.save
@admin = Admin.find(1)
assert_equal 1,@admin.stars.length
assert_equal 3,@admin.stars[0].id
end
测试删除:
deftest_delete
assert_equal4,Admin.find(:all).length

Admin.destroy[1,2]
assert_equal2,Admin.find(:all).length
end
注意:
Admin.destroy[1,2]是一条条删除纪录
Admin.delete[1,2]批量删除,但在本例中会违反外键约束,delete看来比较适合独立的表的批量删除
明星和管理员,多对多
classAdmin<ActiveRecord::Base
has_and_belongs_to_many:stars
end
classStar<ActiveRecord::Base
......
has_and_belongs_to_many:admins
......
end
共有3个表:admins,stars,admins_stars,关联表admins_stars只有两个字段:star_id,admin_id
以一个测试用例作为说明
开头:
requireFile.dirname(__FILE__)+'/../test_helper'
classAdminTest<Test::Unit::TestCase
fixtures:admins,:agents,:stars,:admins_stars
defsetup
@admin=Admin.find(1)
end
....
测试读:
deftest_read
assert_equal1,@admin.id
assert_equal"1",@admin.nick_name
assert_equal2,@admin.stars.length
assert_equal"谭咏麟",@admin.stars[0].name_cn
end
测试新增:
deftest_create
new_admin=Admin.new
new_admin.login_name="aa"
new_admin.nick_name="bb"
new_admin.star_ids=[2,3]
new_admin.save
new_admin=Admin.find(new_admin.id)
assert_equal2,new_admin.stars.length
end
测试修改:
def test_updateassert_equal 2,@admin.stars.length
assert_equal 1,@admin.stars[0].id
assert_equal 2,@admin.stars[1].id
@admin.star_ids=[3]
@admin.nick_name="aa"
@admin.save
@admin = Admin.find(1)
assert_equal 1,@admin.stars.length
assert_equal 3,@admin.stars[0].id
end
测试删除:
deftest_delete
assert_equal4,Admin.find(:all).length
Admin.destroy[1,2]
assert_equal2,Admin.find(:all).length
end
注意:
Admin.destroy[1,2]是一条条删除纪录
Admin.delete[1,2]批量删除,但在本例中会违反外键约束,delete看来比较适合独立的表的批量删除
476

被折叠的 条评论
为什么被折叠?



