使用Effort

时间:2017-06-14 21:20:50

标签: c# entity-framework unit-testing ef-database-first effort

我目前正在现有解决方案中进行单元测试的POC。我一直在这里和那里阅读一个图书馆,我看到我发现非常有趣的做涉及实体框架的测试是努力(https://effort.codeplex.com/)。

在我的第一次测试中,Effort很好地模拟了我的数据库上下文,没有抛出奇怪的错误,大多数操作都很好,比如添加新记录并在表有身份时递增我的主键,擅长那一刻,直到我遇到一个涉及具有唯一密钥的表的情况。

这是我目前的情况:

  1. 数据库第一模型。

  2. 上下文和实体没有唯一的密钥规则,因此如果Effort工作在“内存中”,则唯一密钥必须存在于代码中,因此Effort会在过程中将其带入,因此我添加了唯一密钥在我的实体手动只是为了测试它,我在我的类(实体)中的三个属性(字段)中添加它:

    [Index(“UK_WhateverName”,IsUnique = true,Order = 1)]

    [Index(“UK_WhateverName”,IsUnique = true,Order = 2)]

    [Index(“UK_WhateverName”,IsUnique = true,Order = 3)]

  3. 该方法在try catch内部,try内部是dbcontext.SaveChanges()。在实际条件下,当唯一键规则被侵犯时会捕获DbUpdateException,因此当发生这种情况时,该方法返回-1。

  4. 我认为即使Effort能够捕获唯一键失败,它也可能不会抛出DbUpdateException,所以我添加了一个额外的catch来捕获Exception,可能发生任何异常。

    < / LI>
  5. 代码在实际条件下工作正常,当唯一键被侵犯时返回-1。

  6. 使用Effort的当前结果是代码通过没有任何问题,它不捕获唯一键失败,甚至不在异常捕获中,并且测试保存它通常递增主键。

    是否有可能在努力模拟唯一密钥失败?,我错过了什么?

    提前感谢您的帮助。

0 个答案:

没有答案