Я пытаюсь проверить вызов метода с помощью Moq, но я не могу правильно получить синтаксис. В настоящее время я использую это как подтверждение:
repository.Verify(x => x.ExecuteNonQuery("fav_AddFavorites", new
{
fid = 123,
inputStr = "000456"
}), Times.Once());
Код компилируется, но с ошибкой выполняется ошибка:
Expected invocation on the mock once, but was 0 times:
x => x.ExecuteNonQuery("fav_AddFavorites", new <>f__AnonymousType0<Int32, String>(123, "000456"))
No setups configured.
Performed invocations:
IRepository.ExecuteNonQuery("fav_AddFavorites", { fid = 123, inputStr = 000456 })
Как проверить вызов метода и сопоставить параметры метода для анонимного типа.
UPDATE
Чтобы ответить на вопросы:
Я пытаюсь проверить, как вызван метод, и что параметры верны.
Подпись метода, который я пытаюсь проверить:
int ExecuteNonQuery(string query, object param = null);
Код настройки просто:
repository = new Mock<IRepository>();
ОБНОВЛЕНИЕ 2
Похоже, что это проблема с Moq и как она обрабатывает анонимные типы в .Net. Код, написанный Полом Матовичем, отлично работает, однако, как только код и тест находятся в разностных сборках, тест терпит неудачу.