Spu*_*pud 9 linq moq enumerable
我是一个rps =新名单的莫清我的路线部件<IRoutePart>
......(3路部件)
和Moqing GetEnumerator()我的路线如下
route.Setup(ro => ro.GetEnumerator()).返回(rps.GetEnumerator());
但是,在调用Last()时,Moq在以下代码中失败并且"Sequence contains no elements"
o.Route.Any(rp => rp.IsNonTowLocation && rp!= o.Route.First()&& rp!= o.Route.Last())
在即时窗口中查看First()Last()如果我多次执行First()Last(),我会发现值会发生变化.就好像MoveNext()被调用而不是Reset()和Enumerable它完全混淆了.有没有人在Moq遇到这个问题并找到了解决方案?
Stu*_*art 17
您已经设置了GetEnumerator,以便每次都返回相同的枚举器实例.
route.Setup(ro => ro.GetEnumerator()).Returns(rps.GetEnumerator());
Run Code Online (Sandbox Code Playgroud)
这相当于:
var enumerator = rps.GetEnumerator()
route.Setup(ro => ro.GetEnumerator()).Returns(enumerator);
Run Code Online (Sandbox Code Playgroud)
如果你想在每次调用时都有一个新的枚举器,那么你需要传递一个lambda表达式:
route.Setup(ro => ro.GetEnumerator()).Returns(() => rps.GetEnumerator());
Run Code Online (Sandbox Code Playgroud)
拉姆达将调用每一次的GetEnumerator()被调用-所以First()
并Last()
随后应正常工作.
归档时间: |
|
查看次数: |
1104 次 |
最近记录: |