我尝试使用回调每次返回不同的结果(来自结果数组)

问题描述 投票:0回答:0

我试图模拟一个方法,以便每次调用它时都返回不同的结果。该模拟将在不同的测试中使用,并且可能的结果数量可能会有所不同。我一直在使用SetupSequence,但似乎很多行可能不需要。
例如

MockMethod(result1, result2, ... resultN)
   setup...
     .Returns(result1),
     .Returns(result2),
     ...
     .Returns(resultN);

(这确实有效,但哇我绝对不应该以这种方式这样做)

我正在尝试使用回调,使其递增并从数组返回结果。 例如

MockMethod(string[] result)
  int callNumber = 0;
  Setup...
     .Callback(() => callNumber++)
     .ReturnsAsync(() => result[callNumber]);

但它每次都返回第一个结果。 (我确实意识到,如果它要在第一次返回之前递增,那么我需要初始化为 -1,但此时它似乎不会递增。)模拟在运行正在测试的方法之前进行初始化,所以我认为这就是原因它只是返回第一个结果。如果没有一堆返回线,我想不出另一种方法来做到这一点。大家有什么想法吗

我也尝试过先返回,但结果相同...... 例如

MockMethod(string[] result)
  int callNumber = 0;
  Setup...
     .Returns(result[callNumber]);
     .Callback(() => callNumber++)
c# callback sequence moq xunit
© www.soinside.com 2019 - 2024. All rights reserved.