Vou ter que fazer algumas suposições aqui
Você menciona o EF, então acho que os mocks em questão estão relacionados ao datalayer?
Como você está usando o EF, acho que o seu Repositório apresenta um IQueryable e seus modelos constroem consultas dentro deles mesmos?
Isso levaria você a ter que criar uma simulação com dados que sejam consistentes com as várias consultas que seus Modelos executam, o que, imagino, pode acabar sendo bastante complicado.
Acho que o erro aqui é o repositório que pode ser consultado. Minha opinião é que os repositórios devem expor métodos como
IEnumerable GetModelsByConditionXAndConditionY (var valueOfAParmeter)
em vez de
IEnumerable GetModelsByQuery (Func SomeQueryFunction)
ou
IQueryable GetModelsButDontReturnThemYetINeedToThink ()
Isso permite que você construa uma versão na memória do seu banco de dados com dados de teste consistentes, porque as maneiras pelas quais esses dados são retornados são conhecidas pelo Repositório.
Qualquer classe Consuming pode pegar o repositório e esperar que ele funcione corretamente sem a configuração específica do modelo dos dados.
Eu também tendem a fazer este repositório simulado como sua própria classe, em vez de usar um framework simulado para configurá-lo por teste unitário
Isso torna seus testes unitários muito simples, pois todos usam os mesmos dados simulados e permitem que você injete os mesmos repositórios simulados em seu aplicativo real para testes de IU, etc.