NSubstitute是否支持ref参数?
我的iterface中有以下方法签名:
void SetItem(ref AddressItem item);
我像这样做一个参数约束:
IAddAddressForm form = Substitute.For<IAddAddressForm>();
AddressItem item = null;
form.SetItem(Arg.Is(item));
但是因为裁判失败了。如果我拿出ref,那就行了。但我需要在这里通过引用。
任何想法如何得到这个?
旁注:如果传入的值为null,我的最终目标是在SetItem中抛出异常。如果你可以提供帮助,那么你会得到额外的积分!
没有找到相关结果
已邀请:
1 个回复
淘圃跺枯替
,但显然如果您可以避免
您的API将更简单,测试它(无论您使用的框架如何)。 在回答您的直接问题时,您可以通过将第二个代码示例更新为以下内容来传递参考:
为了您的注意事项,请确保您不要试图将太多行为推向替代品。我发现每当我这样做时,我需要简化我正在测试的类和它的依赖项之间的通信。 (或者,如果我真的需要假对象中的大量逻辑,我会手动编写代码而不是生成它;它通常可以更简单。) 有几种方法可以让这个调用抛出异常:
这将仅在使用null ref调用时抛出异常。你也可以根据传递的参数选择性地添加这种行为,虽然我建议不要这样做,因为这可能是你过分投入替代品的一个标志。
最后,如果您只是想在IAddAddressForm抛出一个arg null异常时检查您正在测试的类是否正确响应,我可能只是这样做:
这样你就不关心参数是什么,你只是想确保你正在测试的代码对这种情况做出正确的反应。 希望这可以帮助。 边注: 如果你想使用arg匹配器(如
)来获得
或
参数,你需要在调用本身之外定义它(这可能有点容易出错:你需要确保定义匹配器与他们进入通话的顺序相同):