public void CannotPostVerifyCallsByExpressionForModifiedReferenceTypeArgument() { // Any reference type var sb = new StringBuilder(); sb.Append("call 1"); var mock = new Mock <IFoo>(); var rtm = new ReferenceTypeModifier(mock.Object); rtm.Work(sb); mock.Verify(m => m.Save(It.IsAny <StringBuilder>()), Times.Exactly(2)); // Pass mock.Verify(m => m.Save(It.Is <StringBuilder>(s => s.ToString() == "call 2"))); // Pass var mex = Assert.Throws <MockException>(() => mock.Verify(m => m.Save(It.Is <StringBuilder>(s => s.ToString() == "call 1")))); // Fail due to reference change Assert.Equal(MockException.ExceptionReason.VerificationFailed, mex.Reason); Assert.Contains(@".Save(It.Is<StringBuilder>(s => s.ToString() == ""call 1""))", mex.Message); }
public void CanPreVerifyExactCallsByExpressionForModifiedReferenceTypeArgument() { // Any reference type var sb = new StringBuilder(); sb.Append("call 1"); var mock = new Mock <IFoo>(); mock.Setup(m => m.Save(It.Is <StringBuilder>(s => s.ToString() == "call 1"))) .Verifiable(Times.Once()); mock.Setup(m => m.Save(It.Is <StringBuilder>(s => s.ToString() == "call 2"))) .Verifiable(Times.Once()); mock.Setup(m => m.Save(It.Is <StringBuilder>(s => s.ToString() != "call 1" && s.ToString() != "call 2"))) .Verifiable(Times.Never()); var rtm = new ReferenceTypeModifier(mock.Object); rtm.Work(sb); mock.Verify(); }