0
我试图用NSubstitute嘲笑IComponentContext
如下:模拟Autofac.IComponentContext单元测试C#
[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
{
}
}
,但我得到一个异常:
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.
当我尝试创建一个模拟为什么IComponentContext
是否尝试解决依赖关系?
嘲讽'IComponentContext'有什么意义?你想在这里测试什么? –
我在这里测试完全隔离工厂Get()方法的逻辑。但是,关于嘲讽IComponentContext用于其他任何目的,这个问题一般。 – Leszek
如何实现Get方法?如果它只是调用解决方案,那么从测试中得不到任何有用的东西。 –