我们目前正在通过在Seed方法
中直接执行SQL来实现我们的唯一约束context.Database.ExecuteSqlCommand(
"BEGIN TRY ALTER TABLE MyTable ADD CONSTRAINT UC_CODE UNIQUE (COL1, COL2, COL3) END TRY BEGIN CATCH END CATCH");
但是,现在我无法为此正确编写测试。
我模拟了Repository,并且插入了两次相同的记录,但是...当然,没有抛出错误,因为实际上没有调用数据库(它不应该被调用),但是我怎么写一个测试,确保插入重复记录时引发错误?
答案 0 :(得分:0)
我模拟了存储库,并插入了两次相同的记录,但是......的 当然,不会抛出任何错误,因为实际上没有调用数据库 (它不应该是),但是我如何编写一个确保测试的测试 插入重复记录时会引发错误吗?
你误解了嘲弄和伪装依赖关系。伪造的存储库不应该做任何逻辑。如果您测试代码对唯一约束违规的反应,您只需设置模拟以抛出预期的异常。
答案 1 :(得分:0)
单元测试需要调整您要测试的代码。您想测试EF + DB对约束违规的反应。因此,您需要在真实(测试)数据库上运行测试,您可以在测试开始时创建这些测试。