模拟单元测试的 ScrapySharp 响应

Mocking ScrapySharp response for unit test

我在干净的架构解决方案中使用 ScrapySharp,我需要在我的单元测试中模拟 Scraping 服务响应,以便单元测试是自包含的,而不是实际访问任何外部服务器。

我研究过使用 Moq,但没有找到一种方法来 return 为我的代码创建一个新的 ScrapySharp 网页,然后在单元测试期间使用。

我的基础设施项目中有一个服务接口:

public interface IScrapeService
{
    WebPage NavigateToPage(Uri url, HttpVerb verb = HttpVerb.Get, string data = "", string contentType = null);
}

然后,我将在真实世界中实现此服务,并将其注入到使用该服务的 class 中。我的单元测试将使用在我的测试期间注入的服务的模拟实现。

有没有人尝试过类似的事情,或者如果我没有正确考虑这个问题可以帮助我吗?

这里的问题是:为什么需要将 ScrapySharp 的响应公开为方法的输出值? return 一些自定义模型可能更好,它只包含 ScrapySharp 响应中所需的信息。自定义模型将提供更多优势 - 您的 IScrapeService 接口的所有客户端都不需要明确引用 ScrapySharp。当然,它会给你更好的测试这个接口的能力。