Издевательская структура в приложениях UWP
Мне кажется, что все хорошие Mocking-инфраструктуры (MOQ, RhinoMocks и т.д.) по понятным причинам полагаются на динамические прокси-серверы, которые не поддерживаются в UWP.
Похоже, что MOQ знает об этом ограничении:
https://github.com/Moq/moq4/issues/195
И Microsoft менее чем полезна в этой ситуации:
https://social.msdn.microsoft.com/Forums/en-US/652b9d16-c4ab-401c-9239-0af01108e460/uwp-is-there-any-indication-that-windows-10-uwp-universal-applications-will-support-code-emitting?forum=wpdevelop
Есть ли какая-либо Mocking-инфраструктура для Unittesting UWP-приложений? Или какие-либо идеи, если поддержка Dynamic Proxy будет в любое время в ближайшее время для UWP?
Спасибо!
Ответы
Ответ 1
Мы (Microsoft BigPark Studio) только что выпустили макет фреймворка, который совместим с UWP,.NetCore и .Net Framework (Nuget Etg.SimpleStubs
). Фреймворк использует Roslyn для создания заглушек.
Чтобы обойти ограничение Reflection.Emit
в UWP, среда генерирует заглушки во время компиляции. Заглушки генерируются и компилируются за один шаг (во время сборки). Если вы когда-либо использовали VS Fakes, опыт очень похож.
SimpleStubs является открытым исходным кодом и доступен как NuGet:
Документы: https://github.com/Microsoft/SimpleStubs
NuGet: https://www.nuget.org/packages/SimpleStubs/
Ответ 2
В настоящее время существует инфраструктура под названием HyperMock, которая выполняет насмешку аналогично другим платформам на платформе .NET.
Посетите HyperMock
Поскольку это доступно через Nuget, вы можете найти его через диспетчер пакетов с помощью HyperMock.Universal или установить его с помощью консоли пакета
Install-Package HyperMock.Universal
Используйте универсальную версию для проектов UWP.