可以从我的MVC控制器引用WebClient吗?

时间:2010-11-11 19:39:30

标签: asp.net-mvc asp.net-mvc-2 ioc-container

我需要从我的控制器下载页面并使用Webclient这样做,这不是Mockable?我如何测试这个或者我可以直接在那里留下参考?

1 个答案:

答案 0 :(得分:3)

您可以定义存储库接口,并在此存储库的实现中使用WebClient。然后你的控制器将使用存储库,因为它是一个界面,很容易模拟。现在你要说的是,这只是委托单元测试存储库实现的问题,该存储库现在正在使用WebClient并且不可模拟。对此的答案是,这不再是单元测试,而是坦率地测试这样的方法:

public string FetchData(string url)
{
    using (var client = new WebClient())
    {
        return client.DownloadString(url);
    }
}

没有多大意义,因为您现在正在测试WebClient类,我希望它的作者已经在Redmond中完成了。