【发布时间】:2022-11-04 16:22:39
【问题描述】:
我正在尝试使用基于队列返回值的循环动态地进行模拟。使用的代码如下(从stackoverflow上的另一个答案中获得)。
var numberQueue = new Queue<int>(new[] { 4, 8, 16, 43});
var mock = new Mock<ITest>();
mock.SetupSequence(x => x.GetNumber()).Returns(numberQueue.Dequeue);
int x1 = mock.Object.GetNumber(); // expected: 4 actual: 4
int x2 = mock.Object.GetNumber(); // expected: 8 actual: 0
int x3 = mock.Object.GetNumber(); // expected: 16 actual: 0
int x4 = mock.Object.GetNumber(); // expected: 32 actual: 0
x1.Should().Be(4); // passes
x2.Should().Be(8); // fails
x3.Should().Be(16); // fails
x4.Should().Be(32); //fails
第一个工作正常,但之后一切都为 0。我试图让它以这种方式运行,因为我希望能够为 IDataReader 动态设置一个模拟。
【问题讨论】:
标签: c# unit-testing queue moq