如何测试在 NSubstiente 中忽略参数参数的调用

本文关键字:参数 NSubstiente 调用 何测试 测试 | 更新日期: 2023-09-27 18:36:06

我有如下所示的代码:

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 匹配参数参数,忽略传入的参数数量?

如何测试在 NSubstiente 中忽略参数参数的调用

Params使方法能够接收可变数量的参数。在params中,传递给方法的参数被编译器更改为临时数组中的元素。然后在接收方法中使用此数组。

您可以使用 Arg.Any<EventStream[]> 来匹配 params 参数,忽略传入的参数数。

eventPublisher.Received(1).Publish(Arg.Any<SpecificEvent>(), Arg.Any<EventStream[]>())