NSubstitute 方法使用特定的参数序列调用多次?

我想检查某个特定方法是否被调用 N 次,首先使用 arg x1,然后使用 x2,然后使用 x3,等等,最后使用 arg xN。我知道可以这样做:


Received.InOrder(() => {

    subst.MyMethod(x1);

    subst.MyMethod(x2);

    subst.MyMethod(x3);

    // ...

    subst.MyMethod(xN);

});

但是可以通过某种简单列出参数序列的方式来完成吗?


像这样的东西(概念性的):


int[] args = {x1, x2, x3, /*...*/ xN};

subst.Received(N).MyMethod(Arg.Is(args));

这是一个使用 InOrder 的实现,但我认为这是一种解决方法:


int[] args = {x1, x2, x3, /*...*/ xN};

Received.InOrder(() => {

    foreach (int i in args)

        subst.MyMethod(i);

});


梵蒂冈之花
浏览 112回答 1
1回答

郎朗坤

NSubstitute API 没有执行此操作的方法。对我来说,foreach 方法是最清晰的;它准确地显示了测试成功的预期。如果您经常需要,您可以编写一个方法来打包此逻辑,但是虽然它可能会使其更加简洁,但我认为这不会使其变得更清晰。
打开App,查看更多内容
随时随地看视频慕课网APP