> Having this additional check will make the test fail if someone changes the predicate in some way

Without understanding the code in full detail, my first impression would be that if a user changes the predicate and the _assertions_ fail, then they should have a look. If they change the predicate in such a way as to e.g. make another API call, or use the result of a cached API call, or whatever, then the predicate still behaves as it should and the unit test should still succeed.

But am also happy to keep these in if you feel we unit test should indeed be ensuring that a) the APIs are called and b) that they are called with precisely with the arguments that we expect ;-)