Как проверить, что вызов метода Moq с определенным значением передается в выражении Linq - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь проверить, что Delete на моем DomainContext вызвано с выражением, содержащим определенное значение.Итак, простой надуманный пример - реальный код:

DomainContext.Delete<Entity>(x => x.Id == id);

Тестовый код:

DomainContext = new Mock<DomainContext>();
DomainContext.Setup(x => x
    .Delete<Entity>(
        It.Is<System.Linq.Expressions.Expression<Func<Entity, bool>>> 
        (predicate => predicate == x => x.Id == id)
    ).Verifiable();

// act

DomainContext.Verify();

Очевидно, что не сработает, потому что он пытается сравнить два предиката по ссылке - и может даже не сработатьоценивать переменную id с одной или обеих сторон!

Можно ли как-нибудь написать предикат (что-то вроде It.HasProperty ?!), чтобы заменить predicate == x => x.Id == id, чтобы проверить, что есть вызовпроверьте, что предикат был вызван с Id == the ID I'm expecting?

...