0

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

我已经研究过使用 Moq,但没有看到为我的代码返回一个新的 ScrapySharp WebPage 然后在单元测试期间使用的方法。

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

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

然后,我将拥有该服务的真实世界实现,该实现将被注入到使用该服务的类中。我的单元测试将使用在我的测试期间注入的服务的模拟实现。

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

4

1 回答 1

0

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

于 2019-11-11T17:43:53.697 回答