Я кодирую интернет-приложение 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
?
Спасибо заранее.