move "async Task<RestResponse<T>> ExecuteAsync<T>" from Extension to IRestClient
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Lokalisieren Sie die Erweiterungsmethode ExecuteAsync sowie die Schnittstelle IRestClient und deren Implementierung im Repository. Prüfen Sie bestehende Aufrufe und Tests für typisierte Requests und ermitteln Sie anschließend, wie sich die Änderung der Schnittstelle auf Mocking und bestehende Nutzer der Erweiterungsmethode auswirkt. Erledigt ist die Aufgabe, wenn die typisierte Ausführung über IRestClient verfügbar ist und die relevanten Tests gemockte Antworten ohne Einrichtung eines Serializers abdecken.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- C#
- Sterne
- 9.8k
- Forks
- 2.3k
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus restsharp/RestSharp
-
RestClientOptions.UserAgent missing from requests with useClientFactory: trueEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
Expose HTTP response trailers on RestResponseEvtl. vergeben @Benziza hat das vor 17 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 68/100
-
RestClient configured with Newtonsoft.Json serializer still instantiates System.Text.JsonEvtl. vergeben @JiuYue0820 hat das vor 59 Tagen übernommen. Offenbug
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 65/100
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 48/100
-
feature-request rfc
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
Alle Issues in restsharp/RestSharp
Ähnliche Issues
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
ClickHouse/clickhouse-cs#689 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 7 Tagen
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 65/100
vchelaru/FlatRedBall2#1481 ·
Maintainer antworten meist innerhalb von 1 Tag
-
ai-chat bug trivial
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
area-signalr
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
dotnet/aspnetcore#69842 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag