What happen when two setup intersect or overlap if you prefer.
For example, in the below scenario the setup overlap because obviously
int SomeMethod(string param);
public void SomeClass_ShouldBehaveProperly_GivenSomeScenario()
var mock = new Mock<ISomeInterface>(MockBehavior.Strict);
mock.Setup(m => m.SomeMethod("aSpecificString"))
mock.Setup(m => m.SomeMethod(It.IsAny<string>()))
/*the rest of the test*/
According to documentation found online, The last call wins and nullifies previous calls.
So even in your case if the test was to call
it would return
0 based on the setup in your example.