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

I'm trying to use callback to return a different result (from an array of results) each time

提问人:Peggy W 提问时间:8/1/2023 最后编辑:Heretic MonkeyPeggy W 更新时间:8/1/2023 访问量:34

问:

我正在尝试模拟一个方法,使其每次调用时返回不同的结果。此模拟将在不同的测试中使用,可能的结果数量可能会有所不同。我一直在使用 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# 回调 序列 最小起订量 XUnit

评论


答: 暂无答案