Я кодирую интернет-приложение MVC 5, и у меня есть выражение следующим образом:
public Expression<Func<Account, bool>> IsExpiresDateTimeLessThanMinimumDaysLeftInFreeTrialSubscription(int minimumDaysLeftInSubscriptionForEmail)
{
return Account => System.Data.Entity.DbFunctions.DiffHours(Account.freeTrialEndDate, DateTime.UtcNow) < minimumDaysLeftInSubscriptionForEmail;
}
При извлечении данных из базы данных вышеуказанное выражение выполняется правильно. Однако при написании unit test, который использует указанное выше выражение, я получаю следующую ошибку:
Эта функция может быть вызвана только из LINQ to Entities
Я понимаю, что это потому, что функция System.Data.Entity.DbFunctions.DiffHours преобразует expression в код, который может понять только система баз данных.
Из-за вышеизложенного, возможно ли unit test указанное выше выражение при использовании mock-репозитория, который использует List, а не a DbSet? Если нет, как я должен unit test использовать любой код, который использует expression? Возможно ли unit test expression?
Спасибо заранее.