如何解决简单的注入器和单元测试?
我们现在主要使用类注入,这在单元测试中效果很好,但是有一些(很多)代码直接调用容器,这会导致运行测试时出现问题。
在每个测试类中,我都有一个 SetupData()
方法,每个类都会运行一次。这将为这个特定的类测试添加数据。只要我不依次运行多个(类)测试,这就可以正常工作。如果我这样做,它会告诉我容器已锁定。
private void SetupData()
{
TestEntityviewCache evCache;
if (!_dataIsSetup)
{
evCache = new TestEntityviewCache();
IOC.Current.RegisterSingleton<IEntityViewCache>(evCache);
EntityView.GetEntityViewListMethod = (key) => evCache.Get(key);
EntityView.GetEntityViewListByIdMethod = (key) => evCache.Get(key);
}
evCache = IOC.Current.Get<TestEntityviewCache>();
evCache.Update(EntityViewKey.Mappning,false,MyModelData.CreateMappning(),null);
evCache.Update(EntityViewKey.Kontrakt,MyModelData.CreateKontrakt(),null);
evCache.Update(EntityViewKey.Folder,MyModelData.CreateFolder(),null);
evCache.Update(EntityViewKey.Kontaktgrupp,MyModelData.CreateKontaktGrupp(),null);
}
我已尝试为每个班级测试重置或重新创建容器,但找不到解决方案?
最好的解决方案是替换所有直接的 IOC 调用,但此时工作量很大。
解决方法
在这种情况下,我不得不按顺序运行测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。