2015-07-14 12 views
6

Mit NUnit 2.6.4 & FakeItEasy 1.25.2 Komponententest ein C# -Code in Visual Studio 2013 Community EditionA.Fake <Stream>() .Lesen (...) werfen InvalidOperationException

Das folgende Testfragment führt als

erwartet
[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); 

} 

aber sobald ich meine Fälschung mit callto/Returns() oder ReturnsLazily() Aussage ...

[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); 

} 

0 dekorierenwirft einen System.InvalidOperationException mit der Meldung:

„Die Anzahl der Werte für die Parameter und ref angegeben nicht die Anzahl der und ref Parameter im Aufruf übereinstimmt.“

aus FakeItEasy.Configuration.BuildableCallRule.ApplyOutAndRefParametersValueProducer(IInterceptedFakeObjectCall fakeObjectCall), die als Stream.Read() mir ziemlich seltsam scheint hat keine out/ref Parameter.

Ist das ein Fehler, den ich bei https://github.com/FakeItEasy melden sollte, oder fehle ich etwas?

thx

+0

Ich bin mir nicht sicher, ob Sie das Update gesehen haben, aber wir glauben, dass das Problem in FakeItEasy 1.25.3 gelöst wird. –

Antwort

2

aktualisieren: Der Fehler ist in FakeItEasy 1.25.3 und FakeItEasy 2.0.0 fest.


Ja, es ist ein Bug, der in 1.23.0 eingeführt wurde. Ich habe issue 508 erstellt. Ich werde in naher Zukunft an einer Lösung arbeiten und werde mit den anderen Projektbesitzern besprechen, in welcher Version wir das Update veröffentlichen wollen. Gehe weiter, wenn du eine Meinung hast.

In der Zwischenzeit besteht eine mögliche Problemumgehung darin, zu FakeItEasy 1.22.0 zurückzukehren, wenn Sie keine der Verbesserungen und Fehlerkorrekturen benötigen, die in nachfolgenden Versionen hinzugefügt wurden.

Wenn das keine Option ist, vielleicht abstrahieren weg Stream.Read abstrahieren und die Abstraktion vortäuschen. Oder komm zurück und ich würde mich freuen, andere Wege zu besprechen.

Verwandte Themen