Open Mo0rBy opened 5 months ago
For now, I'm just looping over the map and then using the HaveKeyWithValue()
matcher which is actually clean enough, so on 2nd thought, maybe this isn't needed that badly:
mapA := map[string]string{
"keyA": "valA",
"key2": "val2",
"keyB": "valB",
"key1": "val1",
}
mapB := map[string]string{
"key1": "val1",
"key2": "val2",
}
k, v := range mapB {
Expect(mapA).To(HaveKeyWithValue(k, v))
}
Hey @Mo0rBy there isn’t a dedicated matcher for this and i would likely do what you’re doing (loop). If you’re interested in submitting a PR I’d be happy to pull in a new matcher. The trickiest bit is usually picking the right name! Perhaps ContainMap()
?
I'd like to assert that
mapA
contains all the key:value pairs inmapB
butmapA
can contain more key:value pairs.For examples:
Very similar behaviour to the
ContainElements()
matcher, but for maps instead of slices and without needing to explicitly define the keys or values that you are expecting, it should be able to infer that frommapA
.I think there is probably a way to do this with the existing matchers somehow, but I can't figure it out if there is, for example
I think this could be a common enough use case that it should have its own matcher as well, so I thought I should post my query here.