简单的注入器和单元测试?

Simple Injector and unit test?

这些天我们主要使用 class 注入,这在单元测试中效果很好,但是有一些(很多)代码直接调用容器,这会导致问题,而 运行宁测试。

在每个测试 class 中,我得到了一个 SetupData() 方法,每个 class 将 运行 一次。这将为这个特定的 class 测试添加数据。只要我不进行 运行 多次 (class) 测试就可以正常工作。如果我这样做,它会告诉我容器已锁定。

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, false, MyModelData.CreateKontrakt(), null);
    evCache.Update(EntityViewKey.Folder, false, MyModelData.CreateFolder(), null);
    evCache.Update(EntityViewKey.Kontaktgrupp, false, MyModelData.CreateKontaktGrupp(), null);
}

我已经尝试为每个 class 测试重置或重新创建 continer,但我找不到解决方案?

最好的解决方案是替换所有直接 IOC 调用,但此时需要大量工作。

在这种情况下,我必须 运行 按顺序进行测试。