Я пытаюсь проверить вызов метода с помощью 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 })
Как я могу проверить вызов метода и сопоставить параметры метода для анонимного типа.
ОБНОВЛЕНИЕ
Чтобы ответить на вопросы:
Я пытаюсь проверить, что метод был вызван, и что параметры верны.
Подпись метода, который я пытаюсь проверить, такова::
int ExecuteNonQuery(string query, object param = null);
Код установки просто:
repository = new Mock<IRepository>();
ОБНОВЛЕНИЕ 2
Похоже, это проблема с Moq и тем, как он обрабатывает анонимные типы в.Net. Код, опубликованный Полом Матовичем, работает нормально, однако, как только код и тест находятся в разных сборках, тест дает сбой.