如何在AutoFixture中冻结空实例

Pet*_*voy 8 autofixture

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

我想做点什么:

_fixture.Freeze<IPayPalConfiguration>(c => null);
Run Code Online (Sandbox Code Playgroud)

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

_fixture.Inject((IMyInterface)null);
Run Code Online (Sandbox Code Playgroud)

但它似乎不对.

希望有人能为HiveMind贡献正确的解决方案.

Nik*_*nis 6

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

在该特定情况下,通过_fixture.Inject((IPayPalConfiguration)null)手动注入空引用,以便跳过方法的创建部分Freeze.你冻结IPayPalConfiguration为单个值(实际上,空在这里引用),但以手动方式.

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