Можно ли с помощью Moq проверить вызов метода с анонимным типом?

Я пытаюсь проверить вызов метода с помощью 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. Код, опубликованный Полом Матовичем, работает нормально, однако, как только код и тест находятся в разных сборках, тест дает сбой.

15
задан ilivewithian 29 March 2012 в 15:25
поделиться