相关疑难解决方法(0)

你如何模拟C#中的文件系统进行单元测试?

是否有任何库或方法来模拟C#中的文件系统来编写单元测试?在我目前的情况下,我有方法检查某个文件是否存在并读取创建日期.我将来可能需要更多.

c# unit-testing mocking

140
推荐指数
5
解决办法
7万
查看次数

如何在线程或计时器中访问HttpServerUtility.MapPath方法?

System.Timers.Timer在我的Asp.Net应用程序中使用a ,我需要使用HttpServerUtility.MapPath似乎只能通过的方法HttpContext.Current.Server.MapPath.问题是,HttpContext.Currentnull的,当Timer.Elapsed事件触发.

是否有另一种方法来获取对HttpServerUtility对象的引用?我可以在我的类'构造函数中注入它.安全吗?如何确保在当前请求结束时不会收集垃圾?

谢谢!

.net asp.net timer httpcontext

88
推荐指数
3
解决办法
4万
查看次数

C#单元测试:测试使用MapPath的方法

首先,我知道这个问题非常危险: 如何在C#中进行单元测试中的MapPath

但我希望它有一个不同的解决方案.我的问题如下:

在我的代码中,我有一个需要验证的对象.我正在为每个验证方法创建单元测试,以确保它正确验证.我正在创建模拟数据并将其加载到对象中,然后验证它.问题是在验证过程中,当发生错误时,会分配错误代码.此错误代码用于使用Server.MapPath从xml文件收集有关错误的信息.但是,在尝试获取xml文件时,会抛出异常,这意味着无法找到该文件.

由于MapPath在我的验证代码中,而不是我的单元测试,如何让我的单元测试识别路径?这个问题有意义吗?

错误行(在我的验证码中不是我的单元测试):

XDocument xdoc = XDocument.Load(HttpContext.Current.Server.MapPath("App_Data/ErrorCodes.xml"));
Run Code Online (Sandbox Code Playgroud)

简化:单元测试在我的程序中调用一个调用Server.MapPath然后失败的方法.

.net c# unit-testing server.mappath

19
推荐指数
2
解决办法
1万
查看次数

需要:.NET中的文件系统接口和实现

可能重复:
如何在C#中模拟文件系统进行单元测试?

我使用Moq作为模拟框架,将单元测试编写到我的代码中.
我的代码包括使用对System.IO类的直接调用来调用文件系统.例如,File.Exists(...)等等.
我想将该代码更改为更易测试,所以我应该有一个接口,比方说IFile,用相关的方法Exists(string path).
我知道我可以从头开始编写它,但我认为可能有一个完整,健壮的框架,它具有文件系统的接口和实现.这个(期望的)框架也可以是某种"服务",因此它的API不必是System.IO命名空间的"接口等价物" .
请注意,我真的很想拥有接口(而不是静态方法),以便我的代码可以用于依赖注入

到目前为止我得到了什么:

还有其他建议吗?

.net file-io unit-testing dependency-injection mocking

12
推荐指数
2
解决办法
5147
查看次数