实体框架使Save方法失败

时间:2018-04-10 09:02:59

标签: c# entity-framework unit-testing

我有一个简单的实体,试图让我的单元测试的save方法失败。 问题是,如何使save方法失败并返回false?

public class Sampple
{
    public int Id { get; set; }
    public string Name{ get; set; }
}

public bool Save()
{
    return (_applicationDbContext.SaveChanges() >= 0);
}

1 个答案:

答案 0 :(得分:1)

就像@Yohannis所说,不要浪费你的时间来测试EF本身。

如果您希望测试dbcontext.SaveChanges()失败时可能发生的情况,无论是针对错误解析的属性还是其他内容。

尝试这样的事情:

`try {
   //_applicationDbContext.SaveChanges() 
  throw new Exception();

  // Remember to replace _applicationDbContext.SaveChanges() with 
  //'new Exception' when you are outside of the development db
  return(true); //whilst exception active, here is not hit
}
catch (Exception e) {
  //Error handling here
  return(false);
}`

try catch会尝试完成一个过程,如果它不能,catch将会抓住'抛出的异常。在我们的例子中,我们故意抛出一个new Exception,以便我们可以准确地看到_applicationDbContext.SaveChanges()失败后会发生什么。我已经包含了一个非常基本的异常,但是您可以使用许多类型并定制到您可能想要测试的错误类型。

我附上了一些相关简单示例的链接供您考虑。

https://www.codeproject.com/Articles/850062/Exception-handling-in-ASP-NET-MVC-methods-explaine