move "async Task<RestResponse<T>> ExecuteAsync<T>" from Extension to IRestClient
还没有人认领这个 Issue。
评估
调研方向
在仓库中定位 ExecuteAsync 扩展方法以及 IRestClient 接口和实现。检查与类型化请求相关的现有调用和测试,然后确定接口变更如何影响 mocking 和现有的扩展方法使用者。完成的标准是可以通过 IRestClient 执行类型化请求,并且相关测试覆盖无需设置 serializer 的 mock 响应。
由索引模型根据 Issue 内容生成。
描述
The extension-method
async Task<RestResponse<T>> ExecuteAsync<T>
Is the "natural" way to do a Request: everyting is TypeSave. But If you try to Mock IRestClient, you can only mock the Non-Typed Request-Reponse method.
In a Test-Scenario, we have to add the Serializers and use compute to Serialize & Deserialize, there is no full control on the response - the deserializers try to do the work - and an easy workaround with own serializer/deserialiser is not easy.
I had a long look at the sources, but using a custom Serializer did not worked out well. So I ended up with this Blog-Post unittest-with-restsharp
Yes, this works but is not intuitive.
Describe the solution you'd like
Having Task<RestResponse<T>> ExecuteAsync<T> in IRestClient would enable us to simple Mock the call. No additional Setup, No Serialization during the Test.
As far as I see, the ExtensionMethod can be moved to the RestClient-Implementation without breaking anything. All other ExtensionMethods will work, IRestClient-Implementation / Mocks will work.
You could move the method to the IRestClient Implementaion, extend the interface and remove the ExtensionMethod- without any side effects.
Describe alternatives you've considered
Considered? Mocking the Tests is complex. I considered to remove RestSharp - but my time is limited ;-) I did a complex initialization and hope my (future) colleagues will understand this in 2 years...
If I was unclear / any questions - may need some days for me to answer, but I'm here
- 主要语言
- C#
- 星标
- 9.8k
- 派生
- 2.3k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
restsharp/RestSharp 的其他 Issue
-
RestClientOptions.UserAgent missing from requests with useClientFactory: true可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭bug
难度 2/5 1-3 小时 新手友好度 72/100
-
Expose HTTP response trailers on RestResponse可能已有人在做 @Benziza 于 15 天前认领。 未关闭
难度 4/5 3-5 天 新手友好度 68/100
-
RestClient configured with Newtonsoft.Json serializer still instantiates System.Text.Json可能已有人在做 @JiuYue0820 于 57 天前认领。 未关闭bug
难度 3/5 1-2 天 新手友好度 65/100
-
bug
难度 4/5 3-5 天 新手友好度 48/100
-
feature-request rfc
难度 5/5 一周以上 新手友好度 25/100
查看 restsharp/RestSharp 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
enhancement
难度 2/5 1-3 小时 新手友好度 62/100
维护者通常 1 天内回复
-
area:re1 bounty help wanted needs-game
难度 2/5 1-3 小时 新手友好度 68/100
-
难度 2/5 1-3 小时 新手友好度 68/100
StackExchange/StackExchange.Redis#3274 ·
维护者通常 1 天内回复
-
affected/v17 affected/v18 area/frontend type/bug
难度 2/5 1-3 小时 新手友好度 82/100
umbraco/Umbraco-CMS#24186 ·
维护者通常 2 天内回复