Example #1
0
        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);
        }
Example #2
0
        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();
        }