2011-04-18 48 views
1

目前我们的DBA设计我们的数据库时没有定义外键,这是为了让开发团队为每个表单独地创建CRUD的单元测试。单元测试和外键问题

我们想让数据库团队在实际的数据库中开始使用外键,但是我们也想保持我们测试每个操作而不必创建父行的能力。

有没有一种方法来禁用外键约束没有更改表权限?

你是如何处理这种情况的?

+0

我们不禁用FK的,它阻止我们做一些愚蠢的事情,或者与损坏的数据有关。 – Nix 2011-04-18 16:33:56

+0

你是否在寻找像http://stackoverflow.com/questions/159038/can-foreign-key-constraints-be-temporarily-disabled-using-t-sql? – a1ex07 2011-04-18 16:38:05

回答

1

我们要求每个测试都设定它所期望的环境。这意味着,如果我们必须击中数据库,每项测试都会首先设置环境。我们确实使用了一些辅助方法来填充数据库的公共部分,但我们不会混淆模式本身,因为这是许多情况下正在测试的部分。

通过使用内存数据库进行单元测试,我们还可以使这一点更加容易,因此每个测试都更加独立。

0

测试你要发货的东西。

0
> ... we would also like to keep our ability to test each operation without 
    > having to create the parent rows. 
    > Is there a way to disable foreign key constraints without having alter 
    > table permissions? 

没有,你无法禁用外键约束 也许你可以在与id,它们在你的测试中使用的数据库“-1” 假单亲对象。子项目父母 然后可以引用“-1”虚拟项目