【发布时间】:2018-05-10 16:30:31
【问题描述】:
我是单元测试的新手。我想为删除控制器操作编写单元测试。我想使用 NSubstitute 来模拟所有依赖项。当前的实现使用 IRepository 接口来抽象出对底层数据源的调用。
控制器
public ActionResult Delete(string fileName, bool isPublic)
{
try
{
repo.DeleteDocument(new PortalDocument
{
Path = fileName,
IsPublic = isPublic
});
}
catch (Exception e)
{
EventLog.Logger.LogCritical(e, e.Message);
}
return RedirectToAction(IndexViewName);
}
存储库接口。
public interface IRepository<out T> where T:
CloudBlobContainer
{
bool DeleteDocument(PortalDocument document);
}
PortalDocument 类
public class PortalDocument
{
public bool IsPublic { get; set; }
}
提前致谢。
【问题讨论】:
-
想想你期望action方法做什么。它应该在 repo 上调用 DeleteDocument,并且它应该返回一个重定向结果。测试它是否做了这两件事。您还可以进行另一个测试,其中您的模拟 repo 抛出异常,并确保它捕获并正确记录它,并返回重定向结果。
-
嗨梅森,感谢您的评论一百万
-
我已经尝试过其中一项测试来返回重定向的结果并且它正在工作,但是您能否通过一个示例向我展示如何测试此场景“抛出异常,并确保它捕获它并正确记录”。如果可能的话。
标签: c# asp.net-mvc xunit nsubstitute