如何在AutoFixture中冻结空实例

时间:2012-08-31 15:16:10

标签: autofixture

我正在使用Autofixture作为SUT工厂,并且在冻结空实例时遇到困难。

我想做点什么:

_fixture.Freeze<IPayPalConfiguration>(c => null);

但很快意识到这是错误的。我用这个解决了这个问题:

_fixture.Inject((IMyInterface)null);

但似乎不对。

希望有人能为HiveMind提供正确的解决方案。

1 个答案:

答案 0 :(得分:6)

在内部,Freeze会创建所请求类型的实例(例如IPayPalConfiguration),然后注入,以便在您再次请求时始终返回该实例。

在这种特殊情况下,通过执行_fixture.Inject((IPayPalConfiguration)null)手动注入空引用,以便跳过Freeze方法的创建部分。您冻结 IPayPalConfiguration为单个值(实际上,此处为空引用),但是以手动方式。

请记住,此_fixture.Freeze<IPayPalConfiguration>(c => null)传递方法的空引用,该引用将尝试解析IPayPalConfiguration,因此会抛出ArgumentNullException。