/// <summary> /// Logs an invocation of an expression. /// </summary> /// <param name="mock">The mock.</param> /// <param name="expression">The expression.</param> public void LogInvocation <TMock, TResult>(Mock <TMock> mock, Expression <Func <TMock, TResult> > expression) where TMock : class { var key = new MockExpressionKey(mock, expression); var logger = Invocations[key]; logger.LogInvocation(Counter++); }
public void TestInitialize() { var mock1 = new Mock <object>(); var mock2 = new Mock <object>(); Expression <Func <object, string> > expression1 = o => o.ToString(); Expression <Func <object, string> > expression2 = o => o.ToString(); key1 = new MockExpressionKey(mock1, expression1); key2 = new MockExpressionKey(mock2, expression2); }
/// <summary> /// Gets the logger for the specified mock. /// </summary> /// <typeparam name="TMock">The type of the mock.</typeparam> /// <typeparam name="TResult">The type of the result.</typeparam> /// <param name="mock">The mock.</param> /// <param name="expression">The expression.</param> /// <returns></returns> /// <exception cref="MockInvocationOrderSetupException">There was no setup for the mock.</exception> public ExpressionInvocationLogger GetLogger <TMock, TResult>(Mock <TMock> mock, Expression <Func <TMock, TResult> > expression) where TMock : class { var key = new MockExpressionKey(mock, expression); ExpressionInvocationLogger logger; if (!Invocations.TryGetValue(key, out logger)) { throw new MockInvocationOrderSetupException("There was no setup for the mock."); } return(logger); }
public void Key_with_It_equals_itself() { // Arrange Expression <Func <object, bool> > expr = o => o.Equals(It.IsAny <object>()); var key = new MockExpressionKey(new Mock <object>(), expr); // Act var equalsSelf = key.Equals(key); // Assert Assert.IsTrue(equalsSelf); }
/// <summary> /// Setups order of invocation logging for the mock. /// </summary> /// <typeparam name="TMock">The type of the mock.</typeparam> /// <typeparam name="TResult">The type of the result.</typeparam> /// <param name="mock">The mock.</param> /// <param name="expression">The expression.</param> public void Setup <TMock, TResult>(Mock <TMock> mock, Expression <Func <TMock, TResult> > expression) where TMock : class { var key = new MockExpressionKey(mock, expression); Invocations[key] = new ExpressionInvocationLogger(); }