public void Test_Call_To_Unknown_Method_Should_Fail() { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub, MockBehavior.Strict); // Act Assert.Throws<VerificationException>(() => ((ILogWriter) stub).Write(42), "Strict mock should fail because of unknown method call."); }
public void Verify_Write_With_Invalid_Arguments_Never_Called() { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub); // Act ((ILogWriter)stub).Write("42"); // Assert mock.Verify(lw => lw.Write(""), Times.Never()); }
public void Test_Call_To_Known_Method_Should_Not_Fail() { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub, MockBehavior.Strict); mock.Setup(lw => lw.Write(It.IsAny<int>())); // Act ((ILogWriter)stub).Write(42); mock.Verify(); }
public void Test_Verify_Succeeds_If_Correct_Method_Calls() { // Arrange var stub = new StubILogWriter(); var mock = stub.AsMock(); // Act ((ILogWriter)stub).Write("42"); // Assert mock.Verify(lw => lw.Write(It.IsAny<string>())); }
public void Test_Verify_With_One_Func(Expression<Func<ILogWriter, int>> action, Expression<Func<ILogWriter, int>> verificationExpression, Times times) { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub); // Act action.Compile()(stub); // Assert mock.Verify(verificationExpression, times); }
public void Test_Verify_Method_Fails_If_Wrong_Method_Was_Called() { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub); // Act ((ILogWriter)stub).Write("42"); // Assert Assert.Throws<VerificationException>( () => mock.Verify(lw => lw.ToString())); }
public void Test_VerifyAll_With_One_Action(Expression<Action<ILogWriter>> action, Expression<Action<ILogWriter>> verificationExpression, Times times) { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub); mock.Setup(verificationExpression, times); // Act action.Compile()(stub); // Assert mock.Verify(); }
public void Test_WriteLine_Calls_Write_With_Appropriate_Argument() { // Arrange var stub = new StubILogWriter(); var mock = stub.AsMock(); var logger = new Logger(stub); // Act logger.Write("Hello, logger!"); // Assert // Checking that Write method was called with appropriate argument mock.Verify(lw => lw.Write("Hello, logger!")); }
public void Test_WriteLine_Calls_Write_With_Any_Of_String() { // StubILogWriter : StubBase<ILogWriter>, ILogWriter // Arrange var stub = new StubILogWriter(); Mock<ILogWriter> mock = stub.AsMock(); var logger = new Logger(stub); // Act logger.Write("Hello, logger!"); // Assert // Checking that Write method of the ILogWriter was called mock.Verify(lw => lw.Write(It.IsAny<string>())); }
public void Test_Verify_Method_Fails_If_Required_Method_Was_Not_Called() { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub); // Act ((ILogWriter)stub).Write("42"); mock.Verify(lw => lw.Write(It.IsAny<string>())); // Assert Assert.Throws<VerificationException>( () => mock.Verify(lw => lw.Write(""))); }
public void Test_WriteLine_Called_Exactly_Once() { // Arrange var stub = new StubILogWriter(); var mock = stub.AsMock(); var logger = new Logger(mock.Object); // Act logger.Write("Hello, logger!"); // Assert // We could check, that particular method calls specified number of times mock.Verify(lw => lw.Write(It.IsAny<string>()), Times.Once()); }
public void Logger_Write_Calls_For_Enter_Method() { // Arrange var stub = new StubILogWriter(); var customObserver = new CustomObserver(); // Providing custom observer to the stub stub.InstanceObserver = customObserver; // Act ILogWriter logWriter = stub; logWriter.Write("Message"); // Assert Assert.That(customObserver.CalledMethodName, Is.StringContaining("ILogWriter.Write")); Assert.That(customObserver.CalledMethodArgument, Is.EqualTo("Message")); }
public void Test_Unexpected_Call_Should_Fail_To_Method_With_Another_Argument_Value() { // Arrange var stub = new StubILogWriter(); ILogWriter logWriter = stub; var mock = new Mock<ILogWriter>(stub, MockBehavior.Strict); mock.Setup(lw => lw.Write(2)); mock.Setup(lw => lw.Write(3)); // Act logWriter.Write(2); logWriter.Write(3); Assert.Throws<VerificationException>(() => logWriter.Write(5), "Unexpected method should fail with strict mode."); }
public void Test_Event_Occurred_When_Observed_Method_Calls() { // Arrange var mock = new StubILogWriter(); var actualObserver = new FakesCustomStubObserver(mock); MethodInfo methodCalled = null; object[] arguments = null; actualObserver.MethodCalled += (e, ea) => { methodCalled = ea.Method; arguments = ea.Arguments; }; // Act ((ILogWriter)mock).Write(1, "2"); // Assert Assert.IsNotNull(methodCalled, "MethodCalled event handler should be called."); Assert.That(methodCalled.Name, Is.EqualTo("Write")); Assert.IsNotNull(arguments, "MethodCall event handler should fill arguments."); CollectionAssert.AreEquivalent(new object[]{1, "2"}, arguments); }
public void Test_WriteLine_Calls_Write_With_Setup_Method() { // Arrange var stub = new StubILogWriter(); var mock = stub.AsMock(); mock.Setup(lw => lw.Write(It.IsAny<string>())); mock.Setup(lw => lw.Write(It.IsAny<int>())); var logger = new Logger(mock.Object); // Act logger.Write("Hello, logger!"); logger.Write(42); // Assert // We're not explicitly stated what we're expecting. // mock.Setup expectations would be use. mock.Verify(); }
public void Sampe() { var mock = new StubILogWriter(); mock.WriteRInt32 = n => 42; //int exptected = 0; //mock.WriteInt32 = n => // { // // // exptected = n; // Console.WriteLine(n == 42); // }; ILogWriter logWriter = (ILogWriter) mock; var expected = logWriter.WriteR(12312); //logWriter.Write(42); Assert.That(expected, Is.EqualTo(42)); }
public void Test_Stub_Observer_Contains_Valid_Argument_And_Method_Info() { // Arrange var mock = new StubILogWriter(); var stubObserver = new StubObserver(); mock.InstanceObserver = stubObserver; // Act ((ILogWriter)mock).Write("Foo"); // Assert var calls = stubObserver.GetCalls(); CollectionAssert.IsNotEmpty(calls, "Should be at least one call to the observer."); var callInfo = calls[0]; Assert.That(callInfo.GetArguments()[0], Is.EqualTo("Foo"), "Mocked method should be called with 'Foo' argument."); Assert.That(callInfo.StubbedMethod.Name, Is.EqualTo("Write"), "ILogWriter.Write method should be called."); }
public void Test_WriteLine_Never_Calls_Write_Int() { // Arrange var stub = new StubILogWriter(); var mock = stub.AsMock(); var logger = new Logger(mock.Object); // Act logger.Write("Hello, logger"); // Assert mock.Verify(lw => lw.Write(It.IsAny<int>()), Times.Never()); }
public void Test_Write_Int_Calls_Write_With_Argument_In_Specific_Interval() { // Arrange var stub = new StubILogWriter(); var mock = stub.AsMock(); var logger = new Logger(mock.Object); // Act logger.Write(42); // Assert mock.Verify(lw => lw.Write(It.IsInRange(40, 50))); }
public void Test_WriteLine_Will_Fail_With_Strict_Mode() { // Arrange var stub = new StubILogWriter(); var mock = stub.AsStrictMock(); mock.Setup(lw => lw.Write("Foo")); // Act var logger = new Logger(mock.Object); logger.Write("Foo"); // logger.Write will call logWriter.Write, // but we do not expect this, thats why logger.Write will fail! Assert.Throws<VerificationException>(() => logger.Write("Hello, Logger")); }
public void Test_Verify_With_Sequence_Of_Actions( List<Expression<Action<ILogWriter>>> actions, Expression<Action<ILogWriter>> verificationExpression, Times times) { // Arrange var stub = new StubILogWriter(); var mock = new Mock<ILogWriter>(stub); // Act foreach (var a in actions) { a.Compile()(stub); } // Assert mock.Verify(verificationExpression, times); }