简体   繁体   中英

How can I test for calls ignoring params arguments in NSubstitute?

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[]>())

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM