У меня есть хранилище вроде:
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, IEntity
{
private readonly IContext _db;
public Repository(IContext context)
{
_db =context;
}
...
В Global.asax я настроил нинъект как:
kernel.Bind<IContext>().To<Context>();
Это нормально работает в приложении, вероятно, потому, что я создаю экземпляр для простоты, вызывая конструктор с параметром. Однако в модульных тестах есть проблемы.
Тогда в модульном тесте у меня есть:
var mockUnitOfWork = new Mock<UnitOfWork>();
var mockProjectApprovalRepository = new Mock<Repository<ProjectApproval>>();
mockUnitOfWork.Setup(x => x.ProjectApprovalRepository).Returns(mockProjectApprovalRepository.Object);
В этой последней строке я получаю сообщение об ошибке:
Невозможно создать экземпляр прокси-класса: MyNamespace.Repository Не удалось найти конструктор без параметров.
Я смущен этим, потому что я думал, что смысл Ninject в том, что мне не нужно указывать конструктор без параметров. Не должно было бы создать экземпляр Context и использовать конструктор с одним параметром.