C# A.伪造<;溪流>;().读取(…)引发InvalidOperationException
在Visual Studio 2013社区版中使用NUnit 2.6.4和Fakeitesy 1.25.2对C代码进行单元测试 以下测试片段按预期执行C# A.伪造<;溪流>;().读取(…)引发InvalidOperationException,c#,fakeiteasy,C#,Fakeiteasy,在Visual Studio 2013社区版中使用NUnit 2.6.4和Fakeitesy 1.25.2对C代码进行单元测试 以下测试片段按预期执行 [Test] public void test_whatIsUpWithStreamRead() { Stream fakeStream = A.Fake<Stream>(); byte[] buffer = new byte[16]; int numBytesRead = fakeStream.Read(
[Test]
public void test_whatIsUpWithStreamRead()
{
Stream fakeStream = A.Fake<Stream>();
byte[] buffer = new byte[16];
int numBytesRead = fakeStream.Read(buffer, 0, 16);
Assert.AreEqual(0, numBytesRead);
}
[测试]
公共无效测试_whatisuphithstreamread()
{
流fakeStream=A.Fake();
字节[]缓冲区=新字节[16];
int numBytesRead=fakeStream.Read(缓冲区,0,16);
aresequal(0,numBytesRead);
}
然而,只要我用CallTo/Returns()或returnslazly()语句修饰我的伪代码
[Test]
public void test_whatIsUpWithStreamRead()
{
Stream fakeStream = A.Fake<Stream>();
A.CallTo(() => fakeStream.Read(A<byte[]>.Ignored, A<int>.Ignored, A<int>.Ignored)).Returns(1);
byte[] buffer = new byte[16];
int numBytesRead = fakeStream.Read(buffer, 0, 16);
Assert.AreEqual(1, numBytesRead);
}
[测试]
公共无效测试_whatisuphithstreamread()
{
流fakeStream=A.Fake();
A.CallTo(()=>fakeStream.Read(A.Ignored,A.Ignored,A.Ignored)).Returns(1);
字节[]缓冲区=新字节[16];
int numBytesRead=fakeStream.Read(缓冲区,0,16);
Assert.AreEqual(1,numBytesRead);
}
fakeStream.Read()
抛出System.InvalidOperationException,并显示以下消息:
“指定的out和ref参数值的数量与调用中的out和ref参数的数量不匹配。”
从fakeitesy.Configuration.BuildableCallRule.applyout和fparametersValueProducer(IInterceptedFakeObjectCall-fakeObjectCall)
,这对我来说很奇怪,因为Stream.Read()
没有任何out/ref参数
这是我应该报告的bug,还是我遗漏了什么
thx更新:该错误已在和中修复
是的,这是一个bug,它似乎是在1.23.0中引入的。 我创造了。 我将在不久的将来进行修复,并将与其他项目负责人讨论我们希望在哪个版本中发布修复。如果你有意见的话就过来 同时,如果您不需要后续版本中添加的任何增强功能和错误修复,一个可能的解决方法是回滚到FakeiTasy 1.22.0
如果这不是一个选项,也许考虑抽象掉<代码>流。或者回来,我很乐意讨论其他途径。
我不确定您是否看到了更新,但我们相信Fakeetisy 1.25.3可以解决这个问题。