jeudi 23 avril 2015

Mock Autofac.IComponentContext with unit tests c#

I am trying to mock IComponentContext with NSubstitute as below:

[TestClass()]
public class SyncRepositoryFactoryTests
{
    private IComponentContext _container;
    private SyncRepositoryFactory _factory;

    [TestInitialize]
    public void Initialize()
    {
        _container = Substitute.For<IComponentContext>();
        _factory = new SyncRepositoryFactory(_container);
    }

    [TestMethod]
    public void Get_SyncRepositoryOfITestEntity_Success()
    {
        var repository = Substitute.For<IRepository<TestEntity>>();
        _container.Resolve<IRepository<TestEntity>>().Returns(repository);

        var result = _factory.Get<ITestEntity>();

        Assert.IsNotNull(result);
        Assert.IsTrue(result is ISyncRepository<ITestEntity>);
    }

    public interface ITestEntity 
    {
    }

    public class TestEntity : ITestEntity
    {
    }
}

but I get exception:

    ComponentNotRegisteredException: The requested service 
    'Hvb.eMarketAdvisor.Repository.SharePoint.IRepository`1[[Hvb.eMarketAdvisor.
    Repository.SharePoint.Tests.Units.SyncRepositoryFactoryTests+TestEntity, 
    Hvb.eMarketAdvisor.Repository.SharePoint.Tests.Units, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' has not been registered. 

To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.

As I try to create a mock why IComponentContext try to resolve dependency?

Aucun commentaire:

Enregistrer un commentaire