mirror of
https://github.com/wiremock/WireMock.Net.git
synced 2026-07-15 01:02:49 +02:00
Logging failed mappings #391
Closed
opened 2025-12-29 08:27:19 +01:00 by adam
·
7 comments
No Branch/Tag Specified
master
1341-mapping-json
stef-aspire-tests-updates
bug/973-TinyMapper
bug/1149-AppendGuidToSavedMappingFile
feature/1150-DockerImageVersion
61
stef-1108
stef-1097
stef-1083-MessageOptions_Type_Conflict
stef-1062-logger
stef-IgnoreOpenApiErrors
stef-928-TypeLoadException-FluentAssertions-net472
nunit
stef-849
stef-847-regex-questionmark
http_verb
WireMockServerContext
webapp
ai
CommandLineArgumentsParser
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.25.0
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.0
1.12.0
1.11.2
1.11.0
1.10.1
1.10.0
1.9.1
1.9.0
1.8.18
1.8.17
1.8.16
1.8.15
1.8.14
1.8.13
1.8.12
1.8.11
1.8.10
1.8.9
1.8.8
1.8.7
1.8.6
1.8.5
1.8.3
1.8.2
1.8.1
1.8.0
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.62
1.5.61
1.5.60
1.5.59
1.5.58
1.5.57
1.5.56
1.5.55
1.5.54
1.5.53
1.5.52
1.5.51
1.5.50
1.5.49
1.5.48
1.5.47
1.5.46
1.5.45
1.5.44
1.5.43
1.5.42
1.5.41
1.5.40
1.5.39
1.5.38
1.5.37
1.5.36
1.5.35
1.5.34
1.5.33
1.5.32
1.5.31
1.5.30
1.5.29
1.5.28
1.5.27
1.5.26
1.5.25
1.5.24
1.5.23
1.5.22
1.5.21
1.5.20
1.5.19
1.5.18
1.5.17
1.5.16
1.5.15
1.5.14
1.5.13
1.5.12
1.5.11
1.5.10
1.5.9
1.5.8
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.43
1.4.42
1.4.41
1.4.40
1.4.39
1.4.38
1.4.37
1.4.36
1.4.35
1.4.34
1.4.33
1.4.32
1.4.31
1.4.30
1.4.29
1.4.28
1.4.27
1.4.26
1.4.25
1.4.24
1.4.23
1.4.22
1.4.21
1.4.20
1.4.19
1.4.18
1.4.17
1.4.16
1.4.15
1.4.14
1.4.13
1.4.12
1.4.11
1.4.10
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.10
1.3.9
1.3.8
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.18
1.2.17
1.2.16
1.2.15
1.2.14
1.2.13
1.2.12
1.2.11.0
1.2.10
1.2.9.0
1.2.8.0
1.2.7.0
1.2.6.0
1.2.5.0
1.2.4.0
1.2.3.0
1.2.2.0
1.2.1.0
1.2.0.0
1.1.10
1.1.9.0
1.1.8.0
1.1.7.0
1.1.6.0
1.1.5.0
1.1.3.0
1.1.2.0
1.1.1.0
1.1.0.0
1.0.43.0
1.0.42.0
1.0.41.0
1.0.40.0
1.0.39.0
1.0.38.0
1.0.37.0
1.0.36.0
1.0.35.0
1.0.34.0
1.0.33.0
1.0.32.0
1.0.31.0
1.0.29.0
1.0.28.0
1.0.25.0
1.0.24.0
1.0.23.0
1.0.22.0
1.0.21.0
1.0.20.0
1.0.19.0
1.0.18.0
1.0.17.0
1.0.16.0
1.0.15.0
1.0.14.0
1.0.13.0
1.0.12.0
1.0.11.0
1.0.10.0
1.0.9.0
1.0.8.0
1.0.7.0
1.0.6.1
1.0.6
1.0.5
1.0.4.21
1.0.4.20
1.0.4.19
1.0.4.18
1.0.4.17
1.0.4.16
1.0.4.15
1.0.4.14
1.0.4.13
1.0.4.12
1.0.4.11
1.0.4.10
1.0.4.9
1.0.4.8
1.0.4.7
1.0.4.6
1.0.4.5
1.0.4.4
1.0.4.3
1.0.4.2
1.0.4.1
1.0.4.0
1.0.3.20
1.0.3.19
1.0.3.18
1.0.3.17
1.0.3.16
1.0.3.15
1.0.3.14
1.0.3.13
1.0.3.12
1.0.3.11
1.0.3.10
1.0.3.9
1.0.3.8
1.0.3.7
1.0.3.6
1.0.3.5
1.0.3.4
1.0.3.3
1.0.3.2
1.0.3.1
1.0.3.0
1.0.2.13
1.0.2.12
1.0.2.11
1.0.2.10
1.0.2.9
1.0.2.8
1.0.2.7
1.0.2.6
1.0.2.5
1.0.2.4
1.0.2.1
1.0.2.0
1.0.1.5
1.0.1.3
1.0.1.2
1.0.1.1
1.0.0.0
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
adam (Adam Melkus)
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/WireMock.Net#391
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @LevYas on GitHub (Dec 20, 2021).
I'm developing an app that works with several other APIs, and the typical scenario is to record some interactions and use these records later as test data. Sometimes I need to edit a third-party response to a specific request, and I ofter run into trouble "no specific matching found". I thought it would be ideal to save the data about failed matching to analyze it. How can I do it?
I use wiremock.net in tests like described here: https://github.com/WireMock-Net/WireMock.Net/wiki/Using-WireMock-in-UnitTests
so my option is to use the last method from these tips (to access log entries via C# code): https://github.com/WireMock-Net/WireMock.Net/wiki/Request-Matching-Tips
I use it like this:
The problem is that I have several mock servers, and even if I move
logFailedRequeststo some utility class, it's a bit clunky to repeat this call in every mock before stopping and disposing. Right now, the only thing I can think of is, is to build a facade around WireMockNet and do the logging there.What can I do to simplify this? Maybe some configuration trick or overriding of something.
@StefH commented on GitHub (Dec 20, 2021):
Hello @LevYas,
Can you try version:
1.4.29-ci-15687?I did add a new config setting :
SaveUnmatchedRequestswhich should be set to true,https://github.com/WireMock-Net/WireMock.Net/pull/703
@LevYas commented on GitHub (Dec 21, 2021):
Wow, that was fast, thank you!
I love the API! I was able to set the
SaveUnmatchedRequeststo true and to overrideWriteUnmatchedRequestand it logged the failed requests.But I found it very useful to have all the information about mapping and the closest match, like in the
LogEntry, so I can see the closest match and what check(s) failed - headers or body or maybe URL. Can the same data be used for saving unmatched requests?Also, what is the intended way to customize LocalFileSystemHandler? I wanted to change only parts of it to change paths, but it's a bit difficult, and changing the path to UnmatchedRequests didn't work - it was never called and never used:
Though overriding GetMappingFolder worked well, don't understand why the second didn't work.
Anyway, this worked:
The overriding would be easier if the methods are virtual, but maybe I don't use the tool as intended and there are simpler ways to achieve that.
@StefH commented on GitHub (Dec 21, 2021):
Can you try
1.4.29-ci-15699?About your question about the folder, I don't know. Can you take a look at the source code? Maybe I made a mistake?
https://github.com/WireMock-Net/WireMock.Net/blob/stef-702-log-failed-requests/src/WireMock.Net/Handlers/LocalFileSystemHandler.cs
And indeed, currently this class has no virtual methods yet, I'll think about this...
#703
@LevYas commented on GitHub (Dec 22, 2021):
Thank you!
The logged file contains the data I wanted, cool, thanks!
I think I found the reason: For writing the mappings in Proxy you use
WriteMappingFileand you provide the full path as an argument. The proxy uses the interface, so it finds the interface implementation in my class.On the other hand, for unmatched requests
WriteUnmatchedRequestperforms a "local" call toGetUnmatchedRequestsFolder(), so all the calls stay within the class. So the only way to override this behavior is to reimplementWriteUnmatchedRequest.That is fine, but if the path adjustment is easier, it'd be superb.
Just for the context, my use-case is to record some data to TestData, maybe remove content-length matching and adjust a couple of fields in the body. I commit the TestData to Git and use these records in my local and CI tests. So LocalFileSystemHandler is perfectly fine in general, I just tune it to save and load records to and from the TestData folder.
When something goes wrong, I get the unmatched request in the same TestData folder, so it appears as an uncommitted file on the Git panel in VisualStudio and I can immediately open it and see what was wrong, fix the problem, and delete the file. In that case, it works like a snapshot test for my requests with debugging aids.
From the top of my head, I'd suggest either
LocalFileSystemHandler's constructor full paths to directories to save mappings and requests (RootFolder would not be enough, i.e. I don't need subfolders __admin or requests)GetUnmatchedRequestsFolder()andGetMappingFolder()virtual, but it'd be more clunky to use@StefH commented on GitHub (Dec 23, 2021):
I've added virtual to all methods.
Now, If you just override the
GetUnmatchedRequestsFolder, all should work fine?New version = 1.4.29-ci-15701;
@LevYas commented on GitHub (Dec 23, 2021):
Thank you!
Just checked, that worked, and the code was simplified significantly, well done! 👍
@StefH commented on GitHub (Dec 24, 2021):
OK. I'll merge this PR and create a new official version in some time.