C#单元测试:如何将Lazy <T> .ValueCreated设置为false?

mic*_*ael 1 c# singleton unit-testing lazy-evaluation

基本上,我有一个单元测试,可以获得一个类的单例实例.我的一些测试要求我模拟这个单例,所以当我做Foo.Instance我得到一个不同类型的实例.

问题是我的检查单独传递,但整体失败,因为一个测试正在干扰另一个测试.

我尝试在我设置的TestCleanup中执行:Foo_Accessor._instance = null;但这不起作用.我真正需要的是Foo_Accessor._instance.IsValueCreated = false;(_instance是一个懒惰的人).

有没有办法取消我没想到的Lazy对象?

m-y*_*m-y 5

为什么不这样做: Foo_Accessor._instance = new Lazy<Foo>(Something);

确保"Something"与你的Foo类正在做的完全相同.