Игнорирование аргумента типа List для защищенного метода в Moq - PullRequest
2 голосов
/ 16 декабря 2010

Я пытаюсь настроить ожидаемый вызов защищенного метода. Подпись методов выглядит следующим образом:

protected SqlDataReader MethodName(string Name, List<SqlParameter> paramList, SqlConnection con)

Я дошел до того, что настроил ожидание следующим образом, но я получаю ошибку при запуске теста:

mock.Protected()
    .Setup<SqlDataReader>( "MethodName", "SomeString", ItExpr.IsAny<List<SqlParameter>>(), ItExpr.IsNull<SqlConnection>() )
    .Returns( dataReader );

Я получаю ошибку:

Test method GlobalTests.DBAdapterSystemDataTest.GetDentalWingsProstheticTypeMappings threw exception: 
System.NotSupportedException: Invalid setup on a non-virtual (overridable in VB) member: mock => mock.ExecuteReaderStoredProcedure("GetDentalWingsProstheticTypeMappings", It.IsAny<List`1>(), It.Is<SqlConnection>(v => Object.Equals((Object)v, (Object)null)))

У кого-нибудь есть идеи, как настроить ожидание, чтобы оно работало? Меня не интересуют значения аргументов, я просто хочу убедиться, что метод был вызван хотя бы один раз.

1 Ответ

1 голос
/ 16 декабря 2010

Сообщение об ошибке означает, что вам необходимо добавить ключевое слово virtual в ваш метод MethodName, чтобы Moq мог переопределить его в тестах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...