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