我如何测试忽略 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[]>())