根据您的描述,您可以轻松地发现自己正在编写集成测试。如果您的目标是测试处理从抓取的数据返回的内容的逻辑(例如,您知道您将获得特定格式的时间表,并且您现在有处理该数据的逻辑),您将需要创建Web 服务逻辑和处理逻辑之间的 SEAM。完成此操作后,您应该能够模拟从 Web 服务调用返回的数据以始终返回相同的表数据,然后您可以针对它编写一致的单元测试。
public class ScrapingService : IScrapingService
{
public string Scrape(string url)
{// scraping logic}
}
public interface IScrapingService
{
string Scrape(string url);
}
public class ScrapingProcessor
{
private IScrapingService _scrapingService
// inject the dependency
pubilc ScrapingProcessor(IScrapingService scrapingService)
{
_scrapingService = scrapingService;
}
public void Process(string url)
{
var scrapedData = _scrapingService.Scrape(url)
// now process the scrapedData
}
}
为了进行测试,您现在可以创建一个实现 IScrapingService 接口的 FakeScrapingService,然后从 Scrape 方法返回您喜欢的任何数据。有一些非常好的 Mocking 框架可以让这类事情变得简单。我个人最喜欢的是 NSubstitue。
我希望这个解释有所帮助。