我有一个简单的实体,试图让我的单元测试的save方法失败。 问题是,如何使save方法失败并返回false?
public class Sampple
{
public int Id { get; set; }
public string Name{ get; set; }
}
public bool Save()
{
return (_applicationDbContext.SaveChanges() >= 0);
}
答案 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