我有一个服务管理器类,用于将我的调用从我的 MVC 项目抽象到我的 REST 服务。管理器类所做的只是设置 Rest 调用(使用 RestSharp)并将服务数据返回给 MVC 应用程序。
所以,起初我考虑不测试这样一个微不足道的类,但决定测试将防止未来可能更复杂的变化。
然而,这是我的困境。我应该抽象多远以便我可以单独测试?
所以,我让 MVC 将我的 RestClient 注入到我的管理器类中。我让 MVC 注入器设置基本 url。所有这些我都可以接受,但我有以下问题:
- 对于我的方法调用,我是否应该让我的方法接受一个参数(userId)和一个 IRestRequest?
- 我的问题是突然之间我的通用服务管理器将成为特定于 Rest 的,因为我的接口需要包含这两个参数。
- 如果我不将 IRestRequest 注入该方法并让实现创建它,这可以吗,因为这将被忽略,因为正在测试的主要方法是 RestClient.Execute,它将被删除而不关心实际的 RestRequest?
- 事实上,由于这是实现的一部分,我也许可以模拟并验证 Execute 方法是否在适当的 RestRequest 对象中发送?
- 或者,我是否应该不注入 IRestRequest,而是将 IRequestResolver 注入我的构造函数?然后在我的方法调用中,我可以只使用 IRequestResolver,它将接收一个表示方法的字符串。然后这将用于计算 RestRequest 参数并返回为该方法适当填充的 RestRequest 对象?
- 或者,我应该只是在我的第一个项目符号下做子项目符号,并使用具体的实现。
- 我还缺少其他选择吗?
我倾向于第四个项目符号,因为它涉及到正在测试的实际解决方案?
如果您需要更多详细信息来帮助我解决我的困境,请告诉我。