I have code which looks like:
eventPublisher.Publish(new SpecificEvent(stuff),
EventStreams.Stream1,
EventStreams.Stream2);
which is calling a method defined as :
Publish<T>(T eventToPublish, params EventStream[] streams) where T : IEvent;
in something I want to test. This event publication is the most important thing to happen in what I want to test, but I am not interested in testing which event streams it publishes to. How can I make a substitute in NSubstitute to test that this is called with an appropriate event, without concerning myself with the params? Thus far, I have:
eventPublisher.Received(1).Publish(Arg.Any<SpecificEvent>());
This, of course, does not match the call with two streams. Is there a way to match a params argument using NSubstitute, ignoring the number of parameters passed in?
Params
enables methods to receive variable numbers of parameters. With params
, the arguments passed to a method are changed by the compiler to elements in a temporary array. This array is then used in the receiving method.
You can use Arg.Any<EventStream[]>
to match a params argument, ignoring number of parameters passed in.
eventPublisher.Received(1).Publish(Arg.Any<SpecificEvent>(), Arg.Any<EventStream[]>())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With