public void VisitSqlSubStatementExpression_WithChanges() { var sqlStatement = SqlStatementModelObjectMother.CreateSqlStatement(Expression.Constant(0)); var expression = new SqlSubStatementExpression(sqlStatement); var fakeResolvedStatement = SqlStatementModelObjectMother.CreateSqlStatement(Expression.Constant(1)); _stageMock .Expect(mock => mock.ResolveSqlStatement(sqlStatement, _mappingResolutionContext)) .Return(fakeResolvedStatement); var fakeSimplifiedExpression = Expression.Constant(0); _groupAggregateSimplifierMock .Expect( mock => mock.SimplifyIfPossible( Arg <SqlSubStatementExpression> .Matches(e => ReferenceEquals(e.SqlStatement, fakeResolvedStatement)), Arg.Is(expression.SqlStatement.SelectProjection))) .Return(fakeSimplifiedExpression); var result = _visitor.Visit(expression); _stageMock.VerifyAllExpectations(); _groupAggregateSimplifierMock.VerifyAllExpectations(); Assert.That(result, Is.SameAs(fakeSimplifiedExpression)); }