Setup Method With Params Array

…衆ロ難τιáo~ 提交于 2019-11-28 11:52:19

You're trying to call a method taking a single string, rather than an array. Bear in mind that it's the C# compiler which handles the params part, converting calling code which just specifies individual values into a call passing in an array. As far as the method itself is concerned, it's just getting an array - and that's what you're mocking.

The compiler is actually turning your code into:

mock.Setup(m => m.GetFirstTicketInQueueIfMatches
                        (new string[] { It.IsAny<string>() }))

which isn't what you want.

You should use:

mock.Setup(m => m.GetFirstTicketInQueueIfMatches(It.IsAny<string[]>()))

If you need to verify that it only gets given a single value, you'll need to do that in the same way you would for a non-params parameter.

Basically, params only makes a difference to the C# compiler - not to moq.

I believe the params string has to be matched by It.IsAny<string[]>() rather than It.IsAny<string>()

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!