我正在使用Autofixture作为SUT工厂,并且在冻结空实例时遇到困难。
我想做点什么:
_fixture.Freeze<IPayPalConfiguration>(c => null);
但很快意识到这是错误的。我用这个解决了这个问题:
_fixture.Inject((IMyInterface)null);
但似乎不对。
希望有人能为HiveMind提供正确的解决方案。
答案 0 :(得分:6)
在内部,Freeze
会创建所请求类型的实例(例如IPayPalConfiguration
),然后注入,以便在您再次请求时始终返回该实例。
在这种特殊情况下,通过执行_fixture.Inject((IPayPalConfiguration)null)
手动注入空引用,以便跳过Freeze
方法的创建部分。您冻结 IPayPalConfiguration
为单个值(实际上,此处为空引用),但是以手动方式。
请记住,此_fixture.Freeze<IPayPalConfiguration>(c => null)
传递方法的空引用,该引用将尝试解析IPayPalConfiguration
,因此会抛出ArgumentNullException。