Moq pozwala na krojenie chronionych wirtualnych członków (see here). Czy można to samo zrobić w FakeItEasy?Jak pozorować chronionych wirtualnych członków w FakeItEasy?
8
A
Odpowiedz
24
Można to zrobić, ale nie można tego zrobić po wyjęciu z pudełka. Sztuką jest implementacja IFakeObjectCallRule i dodanie jej do fałszywej przez Fake.GetFakeManager (foo) .AddRule (myRule).
myślę o realizacji tej funkcji, chociaż byłoby coś takiego:
A.CallTo (foo) .WhereMethod (x => x.Name == "MyProtectedMethod") zwraca (”. cokolwiek");
Składnia nie jest jeszcze dopracowana.
Edit Funkcja wspomniano powyżej jest teraz realizowany:
A.CallTo(foo).Where(x => x.Method.Name == "MyProtectedMethod").WithReturnType<int>().Returns(10);
12
Oprócz odpowiedzi Patrik jest, myślałem, że to być istotne w tym poście, aby dodać końcówkę jak można kpić zabezpieczonego mienia członek:
A.CallTo(foo).Where(x => x.Method.Name == "get_MyProtectedProperty").WithReturnType<int>().Returns(10);
W ten sposób refleksja traktuje metody "zdobywania" właściwości.
Mam nadzieję, że to pomoże :)
Powiązane problemy
- 1. Makiety wirtualnych członków w Moq
- 2. Dziedziczenie PHP i widoczność chronionych członków
- 3. dostępu do chronionych członków nadklasy w C++ z szablonami
- 4. Uzyskiwanie dostępu do chronionych członków z podklas: gcc vs MSVC
- 5. Jak pozorować parametr ** w OCMock w ARC
- 6. Jak pozorować metodę e w Log
- 7. Faking metoda rodzajowa FakeItEasy
- 8. Jak mogę pozorować metody klasy @InjectMocks?
- 9. Jak pozorować/abstrakcyjny system plików w trybie go?
- 10. Jak pozorować metodę z opcjonalnym parametrem w Google Mock?
- 11. Jak pozorować dane w UITest na Xcode 7?
- 12. Co to jest manekin używany w FakeItEasy?
- 13. Dowolny dobry samouczek dotyczący FakeItEasy
- 14. Agregaty C++ nie mają żadnych funkcji wirtualnych?
- 15. jak to zrobić.IsAny <T> w FakeItEasy?
- 16. Obciążenie dziedziczeniem C++ bez funkcji wirtualnych
- 17. jak uzyskać dostęp do wartości chronionych tablic?
- 18. Dziedziczenie funkcji statycznych członków
- 19. Czy można zapobiec wysyłaniu przez Doxygen chronionych elementów?
- 20. domyślna widoczność członków/członków klasy C++
- 21. Czy złe praktyki programistyczne mają członków "publicznych" w klasie "Wewnętrznej"?
- 22. Zasada funkcji wirtualnych w C++
- 23. Zachowanie funkcji wirtualnych w C++
- 24. Czy FakeItEasy wspiera ideę Partial Mocks?
- 25. Jak pozorować wywołanie metody i wartość zwracaną bez uruchamiania metody?
- 26. Zwróć różne obiekty z FakeItEasy A.CallTo()
- 27. Jak tworzyć tylko członków w trybie powershell?
- 28. Zmiana prywatnych metod chronionych w celu przetestowania
- 29. nadrzędne czyste operatorów wirtualnych
- 30. Definiowanie pól wirtualnych peewee
Awesome. Wielkie dzięki za nową funkcję. Teraz mogę ponownie usunąć moją własną regułę. –
Próbowałem kodu podanego powyżej, ale metoda MyProtectedMethod jest nadal wywoływana. Spodziewam się, że zwróci fałszywą wartość zwracaną, ale nie wywoła oryginalnej metody. czy robię coś źle? – stusherwin
@stusherwin Być może ta metoda nie jest wirtualna? –