我如何测试忽略 NSubstitute 中的 params 参数的调用?
How can I test for calls ignoring params arguments in NSubstitute?
我的代码如下所示:
eventPublisher.Publish(new SpecificEvent(stuff),
EventStreams.Stream1,
EventStreams.Stream2);
正在调用定义为 :
的方法
Publish<T>(T eventToPublish, params EventStream[] streams) where T : IEvent;
在我想测试的东西中。此事件发布是我要测试的最重要的事情,但我对测试它发布到哪些事件流不感兴趣。我怎样才能在 NSubstitute 中做一个替代来测试它是用一个适当的事件调用的,而不用关心参数?到目前为止,我有:
eventPublisher.Received(1).Publish(Arg.Any<SpecificEvent>());
这当然不符合二流调用。有没有一种方法可以使用 NSubstitute 来匹配参数参数,忽略传入的参数数量?
Params
使方法能够接收可变数量的参数。使用 params
,传递给方法的参数由编译器更改为临时数组中的元素。然后在接收方法中使用这个数组。
您可以使用 Arg.Any<EventStream[]>
来匹配 params 参数,忽略传入的参数数量。
eventPublisher.Received(1).Publish(Arg.Any<SpecificEvent>(), Arg.Any<EventStream[]>())
我的代码如下所示:
eventPublisher.Publish(new SpecificEvent(stuff),
EventStreams.Stream1,
EventStreams.Stream2);
正在调用定义为 :
的方法Publish<T>(T eventToPublish, params EventStream[] streams) where T : IEvent;
在我想测试的东西中。此事件发布是我要测试的最重要的事情,但我对测试它发布到哪些事件流不感兴趣。我怎样才能在 NSubstitute 中做一个替代来测试它是用一个适当的事件调用的,而不用关心参数?到目前为止,我有:
eventPublisher.Received(1).Publish(Arg.Any<SpecificEvent>());
这当然不符合二流调用。有没有一种方法可以使用 NSubstitute 来匹配参数参数,忽略传入的参数数量?
Params
使方法能够接收可变数量的参数。使用 params
,传递给方法的参数由编译器更改为临时数组中的元素。然后在接收方法中使用这个数组。
您可以使用 Arg.Any<EventStream[]>
来匹配 params 参数,忽略传入的参数数量。
eventPublisher.Received(1).Publish(Arg.Any<SpecificEvent>(), Arg.Any<EventStream[]>())