C# 依赖于网站的单元测试代码?

C# 依赖于网站的单元测试代码?,c#,nunit,C#,Nunit,我想学习如何测试我编写的依赖于外部资源的代码 我从一个网站上搜集数据。然后解析它并保存到强类型域对象 我有单元测试来测试这一点,但因为它们依赖于外部资源——有一个可以访问网站的互联网连接——我不能指望测试能够一直执行 我不想moq的网站(没有任何接口),或设置本地html源文本文件。我更喜欢使用nunit Setup()方法创建一个web服务器,它可以像外部网站一样提供URL。也许它会重定向到localhost而不是网站 我不是在寻找一个具体的解决方案。相反,我希望获得关于处理这种测试情况的最佳

我想学习如何测试我编写的依赖于外部资源的代码

我从一个网站上搜集数据。然后解析它并保存到强类型域对象

我有单元测试来测试这一点,但因为它们依赖于外部资源——有一个可以访问网站的互联网连接——我不能指望测试能够一直执行

我不想moq的网站(没有任何接口),或设置本地html源文本文件。我更喜欢使用nunit Setup()方法创建一个web服务器,它可以像外部网站一样提供URL。也许它会重定向到localhost而不是网站


我不是在寻找一个具体的解决方案。相反,我希望获得关于处理这种测试情况的最佳实践的指导。特别是如果有Microsoft推荐的.Net库或指南。

旁注:您已经划掉了单元测试的推荐方法(带有代码/文件的模拟数据访问层)。。。您试图实现的通常不是所谓的“单元测试”,而是更像集成测试……mock需要一种接口驱动的方法。外部资源没有这样的东西。我的评论是关于命名的——你所说的不是大多数人所说的“单元测试”。通常,“单元测试”是在没有任何外部依赖关系的情况下验证程序/库的独立子系统的测试。运行测试的测试运行者的名称包含“单元”这一事实并不意味着任何测试都是“单元测试”……关于“外部资源没有这样的东西”——我从未见过外部站点的信息神奇地显示出来并可供代码使用。在常规代码中,有一些调用(即通过
HttpClient
/
HttpWebRequest
或web服务代理)将外部站点的数据带入程序。你可以用模拟的访问层替换该访问层,并删除外部资源依赖关系……你所说的听起来像另一个,即提供一个假网站,该网站公开与你正在集成的真实网站相同的界面,但可以配置为随意使用不同的状态(例如,数据场景、性能场景、停机时间等)。但是,使用
Moq
等工具实现fake/double可能比简单地模拟web服务(例如,通过服务合同接口)和模拟各种外部状态(如Alexei所建议的)要多得多?