2015-07-14 7 views
6

Korzystanie NUnit 2.6.4 & FakeItEasy 1.25.2 do badanej jednostki kod C# w Visual Studio 2013 Community EditionA.Fake <Stream>() .read (...) rzucanie InvalidOperationException

Poniższy Test wykonywany jako fragment oczekuje

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

} 

jednak tak szybko, jak ozdobić moje fałszywe z callto/Returns() lub() oświadczenie ReturnsLazily ...

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

} 

fakeStream.Read() rzuca System.InvalidOperationException z komunikatem:

„Liczba wartości na zewnątrz i ref parametrów określonych nie pasuje do liczby parametrów zewnątrz i ref w zaproszeniu”

od wewnątrz FakeItEasy.Configuration.BuildableCallRule.ApplyOutAndRefParametersValueProducer(IInterceptedFakeObjectCall fakeObjectCall), co wydaje się dość dziwne dla mnie jako Stream.Read() nie ma żadnych out/parametry ref.

Czy jest to błąd, który powinienem zgłosić pod numerem https://github.com/FakeItEasy, czy też czegoś brakuje?

thx

+0

Nie jestem pewien, czy widziałeś aktualizację, ale uważamy, że problem zostanie rozwiązany w FakeItEasy 1.25.3. –

Odpowiedz

2

Aktualizacja: Błąd został naprawiony w FakeItEasy 1.25.3 i FakeItEasy 2.0.0.


Tak, to błąd, który prawdopodobnie został wprowadzony w wersji 1.23.0. Utworzono issue 508. Będę pracował nad poprawką w niedalekiej przyszłości i omówię z innymi właścicielami projektu, w jakim wydaniu chcemy wydać poprawkę. Zmierzaj się, jeśli masz opinię.

W międzyczasie jednym z możliwych obejść jest powrót do FakeItEasy 1.22.0, jeśli nie potrzebujesz żadnych ulepszeń i poprawek, które zostały dodane w kolejnych wydaniach.

Jeśli to nie jest opcja, być może rozważ nagromadzenie Stream.Read i sfałszowanie abstrakcji. Lub wróć i chętnie omówię inne ścieżki.

Powiązane problemy