我试图模拟一个方法,以便每次调用它时都返回不同的结果。该模拟将在不同的测试中使用,并且可能的结果数量可能会有所不同。我一直在使用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++)