2012-08-31 27 views
7

我正在使用Autofixture作为SUT工厂,并且难以冻结null实例。如何冻结AutoFixture中的空实例

我想这样做:

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

但很快就意识到不对劲。我已经解决了这个问题:

_fixture.Inject((IMyInterface)null); 

但它看起来不正确。

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

回答

6

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

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

请记住,这_fixture.Freeze<IPayPalConfiguration>(c => null)通过对方法将尝试解决IPayPalConfiguration因为这个原因,一个ArgumentNullException抛出一个空引用。

+0

感谢您的反馈意见,至少确认我没有做错事情 –