Próbuję skonfigurować test jednostkowy metody, która pobiera SocketAsyncEventArgs, tj. Jedną z funkcji IOCP z klasy Sockets.
Aby wrzucić jedną z tych klas do mojejfunkcja, muszę zmienić właściwość .BytesTransferred z SAEA. Jak to zrobić? Próbowałem użyć PrivateObject.SetFieldOrProperty, ale mówi mi, że nie jest w stanie znaleźć tej właściwości:
pargs.SetFieldOrProperty("BytesTransferred", expected);
Otrzymuję następujący wyjątek: "Nie znaleziono metody" System.Net.SNet.SocketAsyncEventArgs.BytesTransferred ".
Odpowiedzi:
3 dla odpowiedzi № 1Ta właściwość nie ma setera. Dwa rozwiązania:
- Nie używaj SocketAsyncEventArgs do testowania, zamiast tego testuj na jakimś fałszywym obiekcie.
- Ustaw prywatne pole m_BytesTransferred. Użyj reflektora, aby przyjrzeć się szczegółom implementacji.
Rozwiązanie nr 2 wprawiłoby mnie w nerwowość. Poszedłem z numerem 1.