Как подменить strongly-named assembly во время тестов
От: AutumnLeaf Великобритания  
Дата: 19.05.15 22:38
Оценка:
В проекте используется 3-rd party library, которая коннектится к серверу компании, которая эту библиотеку предоставила.
Нужно написать тесты, которые бы проверяли, что при определенных входных параметрах объект запроса создаётся правильно и в нём ничего не забыли. Сам запрос можно не отправлять.
Библиотека вся построена на классах, не на интерфейсах, к тому же многие классы объявлены как sealed, internal или с закрытыми конструкторами и замокать ничего не получается.
Создавать фасад, который будет проксировать весь публичный API, и мокать уже его особо не хочется — слишком много работы.
В интернете нашёл эмулятор этой библиотеки, который содержит все теже самые классы с такими же именами и методами, но никуда не коннектится, а просто эмулирует запрос-ответ с полуслучайными значениями.
Появилась идея подсунуть эту библиотеку во время запуска тестов, подменив оригинальную. Однако, судя по всему это работает только с теми assembly, которые не strongly-named, то есть с этой либой не выходит. Попытался найти можно ли скомпилировать проект, который ссылается на strongly-named assembly обычным образом (как бы weakly) — ничего путного не нашел. Видел, что можно отключить проверку на уровне ОС, но это уже слишком — вариант не подходит.

Вопрос: можно ли всё-таки каким-то образом создать weak reference на эту либу, или unsign её и удалить из неё ключ, или как-то подменить её в рантайме?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.