8

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

我想做类似的事情:

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

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

_fixture.Inject((IMyInterface)null);

但这似乎不对。

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

4

1 回答 1

6

在内部,Freeze创建一个请求类型的实例(例如IPayPalConfiguration),然后注入它,这样当您再次请求它时它总是会返回该实例。

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

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

于 2012-08-31T16:37:22.883 回答